Java 用于AngularJS和Spring引导应用程序的CORS域cookie

Java 用于AngularJS和Spring引导应用程序的CORS域cookie,java,angularjs,spring-boot,cookies,cross-domain,Java,Angularjs,Spring Boot,Cookies,Cross Domain,目前,我正在使用AngularJS 1.6()和Spring boot()构建一个应用程序。当用户登录时,SpringBootAPI将在响应中添加cookie,我可以在浏览器中看到cookie 然后在另一个请求中获取用户,我的后端代码使用 httpServletRequest.getCookies() 获取cookie,但它始终返回null 当我使用jsp和SpringBoot时,它工作得很好。所以我想知道这是否是一个跨域的问题 在后端,我已经添加了配置: response.setHeader

目前,我正在使用AngularJS 1.6()和Spring boot()构建一个应用程序。当用户登录时,SpringBootAPI将在响应中添加cookie,我可以在浏览器中看到cookie

然后在另一个请求中获取用户,我的后端代码使用

httpServletRequest.getCookies()
获取cookie,但它始终返回null

当我使用jsp和SpringBoot时,它工作得很好。所以我想知道这是否是一个跨域的问题

在后端,我已经添加了配置:

response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
谁能给我一些建议吗

谢谢,
Peter

您是否尝试过AngularJS中的withCredentials选项

如果添加此配置,angular$http服务将在发送请求时发送cookie

例如:

$http.post(url, {withCredentials: true, ...})
或为所有请求添加此配置:

 angular.module('myApp')
 .config(['$httpProvider', function($httpProvider) {
  $httpProvider.defaults.withCredentials = true;
}])

  • 如果使用cookie进行验证,则可以从前端(angularjs)读取cookie并将其添加到get user调用的头中。然后从后端(spring boot),您可以尝试从服务调用头读取cookie。