如何解决跨域?

如何解决跨域?

  • 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. 简单请求
  2. 非简单请求

简单请求
满足以下两大条件即为简单请求。
条件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-* 字段,说明成功,反之则失败

正常响应

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容