浏览器对于浏览器的限制,跨域,xhr请求(xmlhttprequest)会产生跨域请求;
跨域请求会导致在controller中两个session不一样;
跨域的解决思路?
1.采用jsonp(不常用):前端采用jsonp方式请求,后台要配置一个类继承AbstractJsonpResponseBodyAdvice这个类,构造方法有“callback”让前后端约定形成;
请求参数会有callback。但是只支持get方法,同时也只能支持调用自己的,如果是第三方不能改被调用者时不能用;
2.修改被调用方,让它支持跨域请求,逃过浏览器的拦截。
跨域请求的请求头会有:Origin这个信息
通过Filter来修改被调用方的请求头信息,
3.修改调用方,隐藏自己的域名,让浏览器认为自己的域名和被调用者是相同的域。4.配置浏览器不做跨域验证;
采用Nginx的反向代理,让代理将用户用访问的地址映射为后台的地址,这样浏览器就默认这是本域之间的访问,不会出现跨域问题
在前端的ajax请求方式中,配置多一个参数 xhrFields:{withCredentials:true}
比如一个 $.ajax({
url:’xxxxxx’,
data:{‘xxx’:xxx,……},
success:function(e){
},
Error:function(e){
},
xhrFields:{withCredentials:true},
type:’json’
})
在后台,你本来的域名是kys.yd.com的静态页面访问另外的域名:itheima.kays.com中的一个controller,那么就在这个controller上面加上一个注解@CrossOrigin,就可以实现前端跨域请求到不同域名的一个后端的controller了