免责声明:我不是Java人,但最终还是要维护一些Java代码。
我最近试图调试为什么Java服务器在某些请求上返回状态代码500。我把它缩小到一些基本上做过的代码:
httpServletResponse.addHeader("Set-Cookie", "FOO=BAR; domain=localhost")
如果用URL中的域替换了domain=localhost
,那就有效了。如果我刚刚删除了那行代码,那么它也有效。
我觉得这很令人惊讶。我希望浏览器忽略这样的cookie行,或者至少不要让整个服务器爆炸。搜索周围,我找不到任何关于任何此类限制的文档。这是预期/记录在某个地方的行为吗?
答案 0 :(得分:1)
请在这里查看:http://en.wikipedia.org/wiki/HTTP_cookie#Domain_and_Path
该网站syas的最后一行:
Cookie只能在顶级域及其子域上设置。设置 来自www.bar.com的www.foo.com上的cookies不会用于安全性 的原因。
答案 1 :(得分:0)
经过充分的挖掘和日志记录后,我最终将其跟踪到我正在使用的特定servlet服务器实现,它实际上不喜欢domain = localhost。
我真正追求的是一些规范,其中说“具有错误域值的Set-cookie应该导致500服务器错误”,或者直接解决“如果一个坏cookie应该做什么servlet的问题”域名在Set-Cookie中给出。“