Spring Boot+AngularJS中因为跨域导致Session丢失
2016-10-13 22:25
260 查看
http://blog.csdn.net/dalangzhonghangxing/article/details/52446821
如果还在为跨域问题烦恼,请查看博主的 解决angular+spring boot的跨域问题 那篇文章。
博主在项目开发过程中,遇到了由于跨域而导致的Session丢失问题,非常的恶心,但是经过在网上查阅各种资料,发现解决方法十分简单。
在我们每一次的数据请求中,浏览器都会向后台发送一个JSession,后台会根据这个值自动查找Id为JSession的那个session对象。但是当跨域时,JSession的值每次都会改变,后台就会以为是新的一个会话打开,于是又去创建了一个新的Session对象,而原来的Session对象就找不到了。
解决这个问题的方法很简单,就是在请求中将withCredentials设为true,然后每次请求的头中就会带有cookie的值,cookie中就记录了JSession值,因此Session就不会丢失了。
在AngularJS中,可以通过全局设置,使得withCredentials为true
[javascript] view plain copy
var utils = angular.module('Utils', []);
utils.config(['$httpProvider', config]);
function config($httpProvider) {
$httpProvider.defaults.withCredentials = true;
}
然后让在所有的app中都注入'Utils',就会将所有的请求头中的withCredentials设置为true,这样Session就不会丢失啦。
当然也可以通过以下方法来设置当前请求的withCredentials。
[javascript] view plain copy
$http.xhr.withCredentials
如果还在为跨域问题烦恼,请查看博主的 解决angular+spring boot的跨域问题 那篇文章。
博主在项目开发过程中,遇到了由于跨域而导致的Session丢失问题,非常的恶心,但是经过在网上查阅各种资料,发现解决方法十分简单。
在我们每一次的数据请求中,浏览器都会向后台发送一个JSession,后台会根据这个值自动查找Id为JSession的那个session对象。但是当跨域时,JSession的值每次都会改变,后台就会以为是新的一个会话打开,于是又去创建了一个新的Session对象,而原来的Session对象就找不到了。
解决这个问题的方法很简单,就是在请求中将withCredentials设为true,然后每次请求的头中就会带有cookie的值,cookie中就记录了JSession值,因此Session就不会丢失了。
在AngularJS中,可以通过全局设置,使得withCredentials为true
[javascript] view plain copy
var utils = angular.module('Utils', []);
utils.config(['$httpProvider', config]);
function config($httpProvider) {
$httpProvider.defaults.withCredentials = true;
}
然后让在所有的app中都注入'Utils',就会将所有的请求头中的withCredentials设置为true,这样Session就不会丢失啦。
当然也可以通过以下方法来设置当前请求的withCredentials。
[javascript] view plain copy
$http.xhr.withCredentials
相关文章推荐
- Spring Boot+AngularJS中因为跨域导致Session丢失
- SpringMvc+AngularJS通过CORS实现跨域方案
- SpringMvc+AngularJS通过CORS实现跨域方案
- SpringMvc+AngularJS通过CORS实现跨域方案
- JS脚本导致Session丢失
- spring boot 的session跨域共享
- IE下PHP iframe跨域导致session丢失问题的解决方法
- springmvc + angularjs 跨域问题解决
- 使用springboot + lucence + ik +angularjs+jsoup 搜索自己博客
- Spring Boot+AngularJS+BootStrap实现进度条
- spring boot+angularjs文件下载设置setHeader
- IE下PHP iframe跨域导致session丢失问题的解决方法
- 解决angular+spring boot的跨域问题
- spring-session导致request.getInputStream流数据丢失问题
- js错误导致session丢失
- PHP关于IE的iframe跨域导致session丢失
- 试用了一下SpringBoot+AngularJS的工程生成器JHipster
- Spring Boot+AngularJS导出excel
- spring boot--整合spring session实现session共享以及cookie丢失问题解决
- SpringBoot+AngularJS+Jaspersoft Studio实现多张报表打印控制