我将Angular 7用作前端,将Spring Boot用作后端。
Angular应用程序托管在localhost:4200上,而Spring应用程序托管在localhost:8080
在用户登录时,我正在保存一个春季会议,并返回了cookie。当用户尝试再次登录时,我首先检查该会话是否存在。
为此,需要客户端提供cookie。但是我没有在客户端请求中得到任何cookie。
在Chrome开发者工具的“应用程序”标签中,可以看到以下cookie:
在Spring Boot的application.properties中,我有:
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");
...
}
我在客户请求中没有得到任何cookie。
当我尝试来自邮递员的多个登录请求时,它会起作用。
那为什么不能在浏览器中工作呢?
我尝试将server.servlet.session.cookie.domain属性设置为null,false和127.0.0.1。但是没有一个。
如何解决?