我使用的是烧瓶,当我尝试使用localhost作为cookie域时,werkzeug说:
ValueError: Setting 'domain' for a cookie on a server running localy (ex: localhost) is not supportted by complying browsers. You should have something like: '127.0.0.1 localhost dev.localhost' on your hosts file and then point your server to run on 'dev.localhost' and also set 'domain' for 'dev.localhost'这种情况很糟糕,每个开发人员都必须在hosts文件中设置一个域才能使项目正常工作。我不明白为什么要阻止这一切!
问题如下:
localhost作为cookie域,会发生什么情况?发布于 2014-06-24 13:22:45
问题不是Werkzeug阻止了基于域的cookie的设置,而是大多数浏览器不支持以本地主机(或任何其他单字域)为作用域的受限cookie。Werkzeug没有让您自己调试这个问题(为什么我的会话不受尊重),而是检测您何时使用此设置并立即出错。
我发现最接近的原因是伪规范
domain=DOMAIN_NAME 在搜索cookie列表以查找有效cookie时,将对cookie的域属性与将从中获取URL的主机的Internet域名进行比较。如果有尾部匹配,那么cookie将通过路径匹配来查看是否应该发送。“尾匹配”意味着域属性与主机的完全限定域名的尾相匹配。域属性"acme.com“将匹配主机名"anvil.acme.com”和"shipping.crate.acme.com“。 只有指定域中的主机才能为域设置cookie,而域必须至少有两个(2)或三个(3)句点,以防止形式为".com“、".edu”和“va.us”的域。强调挖掘在下面列出的七个特殊顶级域之一中失败的任何域只需要两个句点。任何其他域至少需要三个。七个特殊的顶级域名是:"COM“、"EDU”、"NET“、"ORG”、"GOV“、"MIL”和"INT“。
如果允许使用单名域,黑客可以为.com设置cookie,然后通过浏览器将该cookie传输到最终用户访问的每个.com域。
另见:http://daniel.haxx.se/blog/2011/04/28/the-cookie-rfc-6265/
发布于 2022-11-28 14:12:26
正如@建议的那样,您可以在本地伪造主机名以获取和设置与域名相关的cookie。
为此,请执行sudo vim /etc/hosts
127.0.0.1 localhost
127.0.0.1 fakesub.fakedomain.com
127.0.0.1 foo.bar.baz.anotherfakedomain.org这样,您可以为域和子域( fakesub.fakedomain.com、fakedomain.com、foo.bar.baz.anotherfakedomain.org、bar.baz.anotherfakedomain.org、baz.anotherfakedomain.org和anotherfakedomain.org )使用和设置cookies。
我每天使用这个解决方案在本地为我的公司开发网站,使用我的公司生产网站通过cookie提供的认证。
https://stackoverflow.com/questions/24387150
复制相似问题