localhost上的Angular Spring启动Cookie
我有Angular 7作为前端,Spring Boot作为后端 Angular应用程序托管在localhost:4200上,Spring应用程序托管在localhost:8080上 在用户登录时,我正在保存一个spring会话,并返回一个cookie。当用户再次尝试登录时,我首先检查会话是否存在 为此,客户端需要cookie。但是我在客户端请求中没有得到任何cookie 在Chrome开发工具的“应用程序”选项卡中,可以看到以下cookie: 在Spring Boot的application.properties中,我有:localhost上的Angular Spring启动Cookie,angular,spring,spring-boot,cookies,Angular,Spring,Spring Boot,Cookies,我有Angular 7作为前端,Spring Boot作为后端 Angular应用程序托管在localhost:4200上,Spring应用程序托管在localhost:8080上 在用户登录时,我正在保存一个spring会话,并返回一个cookie。当用户再次尝试登录时,我首先检查会话是否存在 为此,客户端需要cookie。但是我在客户端请求中没有得到任何cookie 在Chrome开发工具的“应用程序”选项卡中,可以看到以下cookie: 在Spring Boot的application.
spring.session.store-type=jdbc
spring.session.jdbc.initialize-schema=always
server.servlet.session.timeout=60
spring.session.jdbc.table-name=SPRING_SESSION
server.servlet.session.cookie.max-age=2592000
在控制器中:
@RestController
@CrossOrigin(allowCredentials = "true", origins = {"http://localhost:4200", "http://127.0.0.1:4200"})
@RequestMapping(value = "/users")
public class UsersController {
...
@RequestMapping(value = "/login", method = RequestMethod.GET)
public ResponseEntity<?> login(HttpServletRequest request, HttpServletResponse response) {
Cookie[] cookies = request.getCookies();
if(cookies != null) {
for (int i = 0; i < cookies.length; i++) {
String cookieName = cookies[i].getName();
String cookieValue = cookies[i].getValue();
logger.info("UsersController - cookie - {} {}", cookieName, cookieValue);
}
}
HttpSession springsession = request.getSession(false);
if (springsession != null) {
logger.info("UsersController - login - session exists");
...
}
logger.info("UsersController - login - session does not exist");
...
}
@RestController
@交叉原点(allowCredentials=“true”,原点={”http://localhost:4200", "http://127.0.0.1:4200"})
@请求映射(value=“/users”)
公共类UsersController{
...
@RequestMapping(value=“/login”,method=RequestMethod.GET)
公共响应登录(HttpServletRequest请求,HttpServletResponse响应){
Cookie[]cookies=request.getCookies();
如果(cookies!=null){
for(int i=0;i
我在客户端请求中没有得到任何cookie
然而,当我尝试从邮递员那里获得多个登录请求时,它是有效的
那么为什么它不能在浏览器上工作呢
我已尝试将server.servlet.session.cookie.domain属性设置为null、false、127.0.0.1,但均无效
如何解决这个问题?spring会话策略是基于头还是基于cookie?@Barath cookiebased@Barath没有其他配置。@SpringBootApplication公共类DemoApplication{public static void main(字符串[]args){SpringApplication.run(DemoApplication.class,args);}@Barath没有太多可用的日志。应用程序打印UsersController-login-session不存在您可以启用日志
logging.level.org.springframework.session=debug
并共享它。检查此HttpServletRequest的id:getSession缓存结果(false)是否未找到会话。