如何使Cookie可用于域中的所有路径?

我在一个java过滤器中创建了一个cookie并将其添加回响应中

response.addCookie()

然后再返回到客户端node.js应用程序。 该Web应用程序在浏览器中使用本地主机URL进行访问。 在使用'localhost'阅读了关于cookie域的问题之后,我在创建cookie时没有在cookie中设置任何域或路径。

现在Chrome或Firefox浏览器不会在浏览器中显示Cookie。 我所有的URL都是http:// localhost,但每个页面都有不同的路径。

第1步:在http:// localhost / app / login cookie的请求过程中,创建并设置响应
第2步:当页面在响应后加载时,Chrome中不显示任何Cookie
第3步:在下一个请求http:// localhost / app / customer期间,在尝试request.getCookies()时,以前创建的cookie未收到。
第4步:在返回到客户端应用程序之前,会创建一个cookie
第5步:现在,步骤4中创建的cookie在Chrome中显示
第6步:下一个请求也发送到http:// localhost / app / customer,现在在步骤4中创建的cookie也会收到服务器中

如果为本地主机创建cookie是一个问题,它只对步骤4-6有效吗?

如何使创建的cookie可用于localhost域下的所有路径? 我尝试使用cookie.addPath(“/”),但没有改变。

注意 :由于我的开发计算机中存在管理员权限问题,我无法在etc / hosts文件中将域名设置为我的本地主机IP。


不确定的路径是问题。 路径不影响cookie是否被创建; 它只决定它是否被呈现。 如果cookie没有显示在浏览器的cookie jar中,则由于路径以外的其他原因而被拒绝。

Chrome浏览器不接受本地主机的Cookie,因为它不接受顶级域中的Cookie。 URL中的域必须在某个地方有一个点。 所以你可以添加一个hosts条目(推荐)或者只是尝试使用127.0.0.1而不是localhost。

此外,如果Cookie被标记为安全或正在使用域属性设置,则这些都不起作用。 如果其中任何一种情况,您必须使用主机条目而不是本地主机或127.0.0.1。


在您的Java服务器中,您应该在将cookie.setPath("/")添加到响应之前调用cookie.setPath("/")

这样的cookie将匹配所有的请求URI。 很可惜,这不是默认行为。

我在这里有更详细的cookie路径解释 - http://bayou.io/release/0.9/javadoc/bayou/http/Cookie.html#path

链接地址: http://www.djcxy.com/p/44899.html

上一篇: How to make a cookie available to all paths in a domain?

下一篇: Setting a Cookie on Login