Tag: setcookie

AngularJS会忽略HTTP标头中的Set-Cookie

我正在处理基于客户端上的AngularJS和我的API(服务器端的Tomcat + Jersey)的Java应用程序。 我的API的某些path是受限制的,如果用户没有会话,则返回的响应状态是401.在客户端,截获401 http状态以将用户redirect到login页面。 一旦用户通过身份validation,我在服务器端创build一个会话 httpRequest.getSession(真); 并且发送给客户端的响应在其头部中具有Set-cookie指令: 设置Cookie:JSESSIONID = XXXXXXXXXXXXXXXXXXXXX; 域本地主机=; path= / API /; 仅Http 问题是cookie不会放在客户端。 当我检查cookie的localhost域是空的,所以下一个请求没有这个cookie的头,客户端仍然无法访问我的API的受限制的path。 客户端和服务器在同一个域中,但它们没有相同的path和相同的端口号: 客户端: http://localhost:8000/app/index.html 服务器: http://localhost:8080/api/restricted/ 附加信息:在两侧启用CORS: “Access-Control-Allow-Methods”,“GET,POST,OPTIONS” “Access-Control-Allow-Origin”,“*” “Access-Control-Allow-Credentials”,true 任何想法使Set-Cookie正常工作? 这是一个AngularJS相关的问题?

本地主机上的Cookie与显式域

我一定会错过一些关于cookies的基本知识。 在本地主机上,当我在服务器端设置一个cookie, 并明确指定域为localhost(或.localhost)。 该cookie似乎不被某些浏览器所接受。 Firefox 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,因为它不会被发回后续请求。 Opera 9.64: localhost和.localhost都可以工作 ,但是当我检查Preferences中的cookies列表时,即使列在localhost(在列表分组中),域也被设置为localhost.local。 Safari 4: localhost和.localhost都可以工作 ,但是它们总是在Preferences中被列为.localhost。 另一方面,一个没有显式域的cookie,只显示localhost(没有点)。 本地主机有什么问题? 由于这样的一些不一致之处,必须有一些涉及本地主机的特殊规则。 另外,我还不完全清楚为什么域名必须以点为前缀? RFC 2109明确规定: “域”属性的值不包含嵌入的点或不以点开头。 为什么? 该文件表明,它必须做一些安全的事情。 我不得不承认,我没有阅读整个规范(以后可能会这样做),但这听起来有点奇怪。 基于此,在本地主机上设置cookie将是不可能的。