具有显式域的本地主机上的 Cookie

2023-11-27

我一定是错过了一些关于 cookie 的基本知识。在本地主机上,当我在服务器端设置 cookie 时and将域显式指定为 localhost(或 .localhost)。某些浏览器似乎不接受cookie。

火狐 3.5:我在 Firebug 中检查了 HTTP 请求。我看到的是:

Set-Cookie:
    name=value;
    domain=localhost;
    expires=Thu, 16-Jul-2009 21:25:05 GMT;
    path=/

或(当我将域设置为 .localhost 时):

Set-Cookie:
    name=value;
    domain=.localhost;
    expires=Thu, 16-Jul-2009 21:25:05 GMT;
    path=/

无论哪种情况,都不会存储 cookie。

IE8:我没有使用任何额外的工具,但 cookie 似乎也没有被存储,因为它没有在后续请求中被发送回。

歌剧 9.64:localhost 和 .localhostwork,但是当我检查首选项中的 cookie 列表时,域被设置为 localhost.local,即使它列在 localhost 下(在列表分组中)。

狩猎4:localhost 和 .localhostwork,但它们始终在首选项中列为 .localhost。另一方面,没有显式域的 cookie,它仅显示为 localhost(无点)。

本地主机有什么问题?由于存在如此多的不一致之处,必须有一些涉及 localhost 的特殊规则。另外,我不太清楚为什么域名必须以点为前缀? RFC 2109 明确指出:

域属性的值 不包含嵌入点或不包含嵌入点 以点开头。

为什么?该文件表明它必须采取一些与安全有关的措施。我不得不承认我还没有阅读整个规范(可能稍后会阅读),但这听起来有点奇怪。基于此,在本地主机上设置 cookie 是不可能的。


按照设计,域名必须至少有两个点;否则浏览器将认为它们无效。 (参见参考资料http://curl.haxx.se/rfc/cookie_spec.html)

工作时localhost, cookie 域必须完全省略。你不应该将其设置为"" or NULL or FALSE代替"localhost"。那还不够。

对于 PHP,请参阅评论http://php.net/manual/en/function.setcookie.php#73107.

如果使用 Java Servlet API,请勿调用cookie.setDomain("...")根本没有方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有显式域的本地主机上的 Cookie 的相关文章

随机推荐