如何解决跨域?
CORS
Websocket
JSONP
本篇主要总结CORS,另外两种解决方案详解见http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html。
跨域资源共享CORS(Cross-origin resource sharing)
CORS是一个w3c标准,全称为跨域资源共享CORS(Cross-origin resource sharing)。
用来克服ajax同源限制
需要浏览器和服务器(关键)同时支持,IE不低于IE10
CORS通信与同源的AJAX通信没有差别,代码完全一样
实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。
CORS两种请求
- 简单请求
- 非简单请求
简单请求
满足以下两大条件即为简单请求。
条件1
请求方法是HEAD、GET、POST之一。
条件2
HTTP头信息不超过以下字段。
- Accept
- Accept-Language
- Content-Language
- Last-Event-ID
- Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
非简单请求
不满足以上条件的就是非简单请求
非简单请求的CORS请求首先要进行预检请求,如果服务器通过会response有access-control-allow-* 字段,说明成功,反之则失败