跨域请求解决方案

# 跨域请求解决方案 #

## JS跨域请求的简单介绍: ##
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。**只要协议、域名、端口有任何一个不同,都被当作是不同的域**

 


## 跨域解决方案CORS ##
CORS 是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。
它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

1. Browser ------Preflight Request----->Server
1. Browser <-----preflight Response-----~
1. Browser ------Real Request---------->~
1. Browser <-----Real Response----------~


## 设置头信息 ##
    //客户端JS需要加的信息
    {'withCredentials':true}

 

    //服务器端需要加的信息,告诉服务器需要放行的源请求地址
    response.setHeader("Access-Control-Allow-Origin", "http://IP:端口");
    response.setHeader("Access-Control-Allow-Credentials", "true");//操作Cookie需要加这一句

    注解方式@CrossOrigin(origins="http://localhost:9105",allowCredentials="true")
    //注意此方式需要SpringMVC4.2以上的版本,若发生缺省错误的话检查JDK版本

posted @ 2018-07-12 09:15  敬畏代码,敬畏托付  阅读(107)  评论(0)    收藏  举报