我正在开发一个基于客户端的 AngularJS 和服务器端的 API(Tomcat + Jersey for WS)的应用程序。
我的 API 的某些路径受到限制,如果用户没有会话,则返回的响应状态为 401。在客户端,拦截 401 http 状态以将用户重定向到登录页面。
用户通过身份验证后,我在服务器端创建一个会话
httpRequest.getSession(true);并且发送给客户端的响应在其标头中确实包含 Set-cookie 指令:
设置 Cookie:JSESSIONID=XXXXXXXXXXXXXXXXXXXXX;域=本地主机;路径=/api/; HttpOnly
问题是cookie永远不会放在客户端。当我检查 localhost 域的 cookie 时,它是空的,因此下一个请求的标头中没有这个 cookie,客户端仍然无法访问我的 API 的受限路径。
客户端和服务器在同一个域中,但它们没有相同的路径和相同的端口号:
客户 :http://localhost:8000/app/index.html
服务器 :http://localhost:8080/api/restricted/
附加信息:双方都启用了 CORS:
“访问控制允许方法”、“GET、POST、OPTIONS” “访问控制允许来源”,“*” “访问控制允许凭据”,真
使 Set-cookie 正常工作的任何想法?它是 AngularJS 相关的问题吗?