我正在处理基于客户端上的AngularJS和Java上的API(服务器端的Tomcat + Jersey)上的应用程序。HTTP头中的Set-Cookie被AngularJS忽略
我的API的某些路径受到限制,如果用户没有会话,则返回的响应状态为401.在客户端,截取401 http状态以将用户重定向到登录页面。
一旦用户通过验证后,我创建在服务器端的会话
httpRequest.getSession(true);和响应发送到客户端并在其标题中的Set-Cookie指令:
Set-Cookie:JSESSIONID=XXXXXXXXXXXXXXXXXXXXX; Domain=localhost; Path=/api/; HttpOnly
的问题是, cookie从不放在客户端。当我检查cookie为localhost域时,它是空的,所以下一个请求的头中没有这个cookie,客户端仍然无法访问我的API的受限路径。
的客户端和服务器在同一个域,但他们没有相同的路径和相同的端口号:
客户: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相关的问题吗?
我不确定它仍然是相关的,但使您的API依赖于状态是一个糟糕的设计选择(tm)。您应该让您的API无状态以避免将来出现问题。 – sberder 2013-05-10 04:24:54
您是否找到解决方案?我还没有类似的问题。 – Pathsofdesign 2014-04-07 04:44:38