跨域请求解决方案

# 跨域请求解决方案 #

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

 


## 跨域解决方案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版本服务器

相关文章
相关标签/搜索