gpt4 book ai didi

Angularjs:$http 响应设置 cookie 不适用于 CORS

转载 作者:行者123 更新时间:2023-12-05 01:24:10 24 4
gpt4 key购买 nike

我正在使用 angular 和 java 构建一个小型网站。

我尝试编写一个身份验证系统,但我遇到了一些关于 cookie 的问题。

我的 Web 应用程序在 localhost:8081 上运行,而我的 java servlet 在 localhost:8888 上运行。在我的 Java 代码中:

response.addHeader("Access-Control-Allow-Origin", "http://localhost:8081");
response.addHeader("Access-Control-Allow-Headers", "X-Requested-With");
response.addHeader("Access-Control-Allow-Credentials", "true");

在我的 Angular 代码中:

$httpProvider.defaults.withCredentials = true;
$httpProvider.defaults.useXDomain = true;
删除 $httpProvider.defaults.headers.common['X-Requested-With'];

其实我试过阅读 Set-Cookie in HTTP header is ignored with AngularJS

Angularjs $http does not seem to understand “Set-Cookie” in the response

$http response Set-Cookie not accessible

但是我还是遇到了奇怪的问题。

我的第一次登录:你可以发现服务器在 set-cookies header 中响应了一个 JSESSIONID 和一个移动 cookie。 first_login_picture

但我检查了 chrome 开发者工具,发现资源>cookies 是空的。 console

登录后,我向服务器发送另一个请求以获取一些列表:但奇怪的是 chrome 发送了 JSEESIONID,它在第一次登录时从服务器发送到客户端,但在 chrome 开发人员工具中找不到。而 chrome 不会发送我自己创建的“移动”cookie。 after_login

我在服务器中设置我的 cookie:

CookieUtils.setCookie(response, "mobile",String.valueOf(customer.getPhone()), 3600*24*7, "/","localhost");
request.getSession().setAttribute("user", customer);
request.getSession().setMaxInactiveInterval(3600*24);

如果我想在 $http 响应中获取 cookie 并设置它,并且在使用此 cookie 请求其他内容(例如我的“移动”cookie)时,我该怎么办,因为我想以这种方式进行身份验证。

虽然,相同的代码在 firefox 上工作没问题,但在 chrome 43.0.2357.65 m ,wtf.. 上不起作用

最佳答案

添加

 $httpProvider.defaults.withCredentials = true;

根据您的请求,否则将设置 cookie。

关于Angularjs:$http 响应设置 cookie 不适用于 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30586795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com