0

我的 Django 应用程序的行为一直不一致。

如果我在没有 www 的情况下登录,然后在前面加上 www,则它没有经过身份验证,以及它们的所有组合。(www.mydomain.com 和 mydomain.com 在身份验证方面就像不同的站点)

如果验证码很重要,我这里根据教程写了一个中间件:http: //onecreativeblog.com/post/59051248/django-login-required-middleware

到目前为止,我已经解决了强制附加 www, using 的问题PREPEND_WWW = True,但我仍然想了解这个问题;)

有谁知道可能发生了什么?提前致谢!

4

3 回答 3

4

Zaha Zorg 所说的:默认情况下,来自 Django 的 Cookie 不适用于预先添加的 www 和非 www 域。

但是,这里更深层次的问题是,您允许网站的 www 和非 www 域提供相同的内容。除了在两者之间分配流量会带来明显的 SEO 后果外,您还会遇到此类问题。处理此问题的正确方法是将所有流量从一个重定向到另一个(无论您喜欢哪个)。你找到的PREPEND_WWW设置非常适合这个。相反(强制所有流量到非 www),建议只在服务器配置级别进行重写,例如 Apache 或 Nginx。

于 2011-06-14T16:49:49.250 回答
1

您需要查看https://docs.djangoproject.com/en/dev/ref/settings/?from=olddocs#session-cookie-domain

SESSION_COOKIE_DOMAIN 默认值:无

用于会话 cookie 的域。将其设置为跨域 cookie 的字符串,例如“.lawrence.com”,或将 None 用于标准域 cookie。请参阅如何使用会话。

于 2011-06-14T16:17:28.210 回答
1

难道 cookie 取决于服务器的主机名吗?这可以解释为什么两个域名被认为是不同的。

于 2011-06-14T16:20:20.603 回答