首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AngularJS会忽略HTTP标头中的Set-Cookie怎么解决?

AngularJS会忽略HTTP标头中的Set-Cookie怎么解决?
EN

Stack Overflow用户
提问于 2018-04-18 04:35:40
回答 2查看 0关注 0票数 0

我正在开发基于客户端的AngularJS和服务器端的Java的Java(用于WS的Tomcat + Jersey)应用程序。

我的API的某些路径受到限制,如果用户没有会话,则返回的响应状态为401.在客户端,会拦截401 http状态以将用户重定向到登录页面。

一旦用户被认证,我在服务器端创建一个会话

代码语言:javascript
复制
httpRequest.getSession(真);

并且发送给客户端的响应在其头部中具有Set-cookie指令:

代码语言:javascript
复制
设置Cookie:JSESSIONID = XXXXXXXXXXXXXXXXXXXXX; 域本地主机=; 路径= / API /; 仅Http

问题是cookie不会放在客户端。当我检查cookie为localhost域时,它是空的,所以下一个请求的头中没有这个cookie,客户端仍然无法访问我的API的受限路径。

客户端和服务器位于相同的域中,但它们没有相同的路径和相同的端口号:

客户: http://localhost:8000/app/index.html

服务器: http://localhost:8080/api/restricted/

附加信息:在两侧启用CORS:

代码语言:javascript
复制
“Access-Control-Allow-Methods”,“GET,POST,OPTIONS”
“Access-Control-Allow-Origin”,“*”
“Access-Control-Allow-Credentials”,true

这是一个AngularJS相关的问题?

EN

回答 2

Stack Overflow用户

发布于 2018-04-18 12:53:28

似乎"Access-Control-Allow-Credentials" : true没有在客户端设置。指令$httpProvider.defaults.withCredentials = true 被忽略。

用配置参数中的{withCredentials:true}通过简单的$ http调用来替换$ resource调用。

票数 0
EN

Stack Overflow用户

发布于 2018-04-18 14:34:36

假设你已经解决了初始问题,只能通过向Access-Control-Allow-Origin添加特定域并删除通配符才能解决问题,接下来的步骤是:

  1. 必须从头Set-Cookie文件中移除仅限HTTP的文件,否则将永远无法收到由angular
  2. “生成”的Cookie 此设置已经可以在Firefox中使用,但不能在Chrome中使用
  3. 为了使其适用于Chrome,需要: a)使用WS“托管”的域,从cookie中的本地主机发送一个不同的域。你甚至可以使用通配符.domain.com而不是ws.domain.com b)那么需要拨打cookie中指定的域名,否则Chrome将不会存储cookie
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档