Cors(Cross-origin Resource Sharing)一种跨域访问技术,基本思想是使用自定义的HTTP头部容许浏览器和服务器相互了解对方,从而决定响应成功与否。跨域
CORS与JSONP对比:浏览器
1.JSONP只能实现get请求,而CORS支持全部类型的HTTP请求;服务器
2.使用CORS,开发者能够使用普通的XmlHttpRequest发起请求和得到数据,比起JSONP有更好的错误处理;资源
3.JSONP主要被老的浏览器支持,它们每每不支持CORS,而如今大多数浏览器都已经支持CORS;开发
CORS浏览器支持状况:get
Chrome 3+原理
Firefox 3.5+请求
Opera 12+技术
Safari 4+数据
Internet Explorer 8+
CORS是一种协议,它用来约定服务端和客户端那些行为是被服务端容许的。尽管服务端是能够进行验证和认证的,但基本上这是由客户端浏览器来保证的。这些对行为的容许是放在应答包的header里面的。
工做原理
CORS的实现主要包括一些客户端的工做以及两类服务端的处理。
业务逻辑
若是origin被服务端容许,服务端返回请求是带有 Access-Controll-Allow-Origin 头, 而且这个头部信息的值和客户端Origin 的值保持一致;不然就表示不被容许。若是 Access-Controll-Allow-Origin 被设置成 "*",则意味着任何Origin都被容许。
注意:若是所访问的资源须要凭证,那么 Access-Controll-Allow-Origin 则不该该被设置为 "*" 并且 Access-Control-Allow-Credentials 头须要被设置成 true.