如何解决带有中间件认证的django www VS non-www问题
| 我的Django应用程序行为一直不一致。 如果我没有登录www,然后在www前面加了密码,则表示该密码及其所有组合都未通过身份验证。 (就身份验证而言,www.mydomain.com和mydomain.com就像其他网站一样) 如果身份验证代码很重要,那么我会根据此处的教程编写中间件:http://onecreativeblog.com/post/59051248/django-login-required-middleware 到目前为止,我已经使用PREPEND_WWW = True
解决了强制添加www的问题,但我仍然想了解该问题;)
有谁知道会发生什么?
提前致谢!
解决方法
Zaha Zorg所说的话:默认情况下,来自Django的Cookies既不适用于前置www域名,也不适用于非www域名。
但是,这里更深的问题是,您允许网站的www和非www域都提供相同的内容。除了将流量分配在这两者之间带来的明显SEO后果外,您还会遇到类似这样的问题。解决此问题的正确方法是将所有流量从一个重定向到另一个(无论您喜欢哪个)。您发现的
PREPEND_WWW
设置非常适合此操作。相反(建议将所有流量都发送到非www),建议仅在服务器配置级别(例如Apache或Nginx)进行重写。
, 您需要查看https://docs.djangoproject.com/en/dev/ref/settings/?from=olddocs#session-cookie-domain
SESSION_COOKIE_DOMAIN
默认值:无
用于会话cookie的域。对于跨域cookie,将其设置为\“。lawrence.com \”之类的字符串,对于标准域cookie,将其设置为None。请参阅如何使用会话。
, cookie可能取决于服务器的主机名吗?这可以解释为什么两个域名都被认为是不同的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。