【发布时间】:2010-12-25 01:27:33
【问题描述】:
我正在使用带有 ssl 重定向中间件的 Django 1.1.1。
通过 HTTPS 创建的会话数据(身份验证等)在网站的 HTTP 部分中不可用。
在不必使整个站点 HTTPS 的情况下使其可用的最佳方法是什么?
【问题讨论】:
我正在使用带有 ssl 重定向中间件的 Django 1.1.1。
通过 HTTPS 创建的会话数据(身份验证等)在网站的 HTTP 部分中不可用。
在不必使整个站点 HTTPS 的情况下使其可用的最佳方法是什么?
【问题讨论】:
遇到了类似的问题。 #django IRC 上的用户 iiie 向我指出了这个设置:
SESSION_COOKIE_DOMAIN (https://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-domain)将此选项设置为 ".domain.com" 允许我在 HTTP/HTTPS 之间以及跨域和主机/子域共享会话。
我可以想象这样一种情况,一个人不想要这两个,但它现在解决了我的问题。
【讨论】:
这是设计使然,不是您可以轻易更改的。
当通过 HTTP 查看同一站点时,浏览器不会发送通过 HTTPS 发送的 Cookie/身份验证。您最好的解决方案可能是将用户从 HTTPS 页面重定向到设置身份验证 cookie 的 HTTP 页面。
请记住,这种未经身份验证的 cookie 以明文形式通过网络发送,会使您的用户面临欺骗和重放攻击。这对您的应用程序可能无关紧要。
【讨论】: