浏览器不向请求发送jsession id

时间:2017-11-05 15:46:22

标签: spring angular spring-boot

我正在使用Spring Boot后端编写一个Angular4应用程序。我使用SessionScoped bean来存储登录用户(我知道这不是RESTful和东西,我现在可以使用它)和RestControllers用于端点。

使用Postman登录和查询数据效果很好,但它不适用于我的角度应用程序,所以我稍微调试了一下,看到我在响应标头中得到了jsessionid-s,但它们没有附加在请求。

可能是什么问题?如何将Angular与Spring Boot和会话范围的bean一起使用?

1 个答案:

答案 0 :(得分:2)

这取决于你如何调用后端。 如果您正在使用angular-cli并代理对spring boot的调用,它应该可以开箱即用,因为相同的域请求总是通过cookie。

这是首选方式,因为通常这是你使用nginx位置块实时部署它以使所有/ api /调用转到spring而其他所有内容都是有角度的。

https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md

如果您在其他主机上安装了api,则需要将withCredentials: true传递给前后端的所有请求,以强制请求包含Cookie。

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

this.http.post('http://localhost:3000/api/thing', { withCredentials: true }).subscribe()