跨域知识片段

浏览器对于浏览器的限制,跨域,xhr请求(xmlhttprequest)会产生跨域请求;

跨域请求会导致在controller中两个session不一样;

 

跨域的解决思路?

1.采用jsonp(不常用):前端采用jsonp方式请求,后台要配置一个类继承AbstractJsonpResponseBodyAdvice这个类,构造方法有“callback”让前后端约定形成; 跨域知识片段_第1张图片

 

请求参数会有callback。但是只支持get方法,同时也只能支持调用自己的,如果是第三方不能改被调用者时不能用;

 

跨域知识片段_第2张图片
 2.修改被调用方,让它支持跨域请求,逃过浏览器的拦截。

跨域请求的请求头会有:Origin这个信息

通过Filter来修改被调用方的请求头信息,

跨域知识片段_第3张图片

 

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了

你可能感兴趣的:(跨域知识片段)