当我们使用js发起一个非同源的HTTP请求会发生什么?
![27cac9320dcfc69f300e40303056e2ff.png](https://i-blog.csdnimg.cn/blog_migrate/f2b58556b7da3b68298e03e297797326.jpeg)
为什么请求发生了错误?
请求被CORS策略阻塞了,因为请求的资源中不存在Access-Control-Allow-Origin头信息。
现象:浏览器发出了请求且对方服务器响应了,但是响应被浏览器拦截了。
![7382bade874b4ca7a5ee1943501e02fb.png](https://i-blog.csdnimg.cn/blog_migrate/ec11f1575a14cbfb1ebceed14456bfa9.png)
![3db4c2e6d826753d2cdaef8071ffb357.png](https://i-blog.csdnimg.cn/blog_migrate/42591572818456fb13467fa8320a3916.jpeg)
什么是CORS?
CORS(Cross-Origin Resource Sharing 跨域资源共享 ) 是一种机制,它使用额外的HTTP头来告诉浏览器 ,让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。
跨域资源共享标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源。另外,规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 Cookies 和 HTTP 认证相关数据)。