首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么werkzeug不允许对cookie域使用localhost?

问为什么werkzeug不允许对cookie域使用localhost?
EN

Stack Overflow用户
提问于 2014-06-24 12:52:12
回答 2查看 4.7K关注 0票数 6

我使用的是烧瓶,当我尝试使用localhost作为cookie域时,werkzeug说:

代码语言:javascript
复制
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域,会发生什么情况?
  • 我怎么能忽略这个错误呢?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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/

票数 5
EN

Stack Overflow用户

发布于 2022-11-28 14:12:26

正如@建议的那样,您可以在本地伪造主机名以获取和设置与域名相关的cookie。

为此,请执行sudo vim /etc/hosts

代码语言:javascript
复制
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提供的认证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24387150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档