Cors(Cross-origin Resource Sharing)一种跨域访问技术,基本思想是使用自定义的HTTP头部允许浏览器和服务器相互了解对方,从而决定响应成功与否。
CORS与JSONP对比:
1.JSONP只能实现get请求,而CORS支持所有类型的HTTP请求;
2.使用CORS,开发者可以使用普通的XmlHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理;
3.JSONP主要被老的浏览器支持,它们往往不支持CORS,而现在大多数浏览器都已经支持CORS;
CORS浏览器支持情况:
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.