【发布时间】:2015-08-15 16:44:22
【问题描述】:
我正在使用 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");
在我的角度代码中:
$httpProvider.defaults.withCredentials = true;
$httpProvider.defaults.useXDomain = true;
delete $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 标头中响应了一个 JSESSIONID 和一个移动 cookie。
但我检查了 chrome 开发人员工具,发现资源>cookies 为空。
登录后,我向服务器发送另一个请求以获取一些列表: 但奇怪的是 chrome 发送 JSEESIONID,它在第一次登录时从服务器发送到客户端,但在 chrome 开发人员工具中找不到。虽然 chrome 不发送我自己创建的“移动”cookie。
我在服务器中设置了我的 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..
【问题讨论】:
-
您找到解决方案了吗?
-
你找到解决办法了吗?
标签: angularjs google-chrome cookies cross-domain