CORS为什么要区分简单请求和非简单请求

2020-03-24  本文已影响0人  看到这朵小fa了么

为什么存在跨域

首先要知道,不管是简单请求还是复杂请求,服务端每次都是要对跨域和资源进行判断的(客户端的顺滑只是服务端的伪装罢了~)。跨域只是浏览器的一种保护机制,是为了保护站点的安全,其实跨域本身是不存在的,为了安全浏览器针对XMLHTTPRequest和fetch这种脚本发起的跨域请求做了一定的跨域限制,而对于浏览器自身的如img的src、script的js资源、form表单的提交,没有做跨域的限制。

为什么要区分简单和非简单请求

1、因为浏览器认为简单请求是安全的,所以可以通过跨域限制到达服务器,也就没必要对简单请求做预检请求(人家本来就可以通过跨域你预检个什么)
2、当然简单请求也进行预检,不过没必要,因为预检请求是干嘛的呢你要知道。

为什么要发起预检请求

浏览器进行跨域限制主要是通过两种方式

cors请求过程

首先如果是简单请求则在请求头直接添加orgin字段,对于非简单请求需要一次预检请求options,需要origin字段,当服务端通过预检请求会在响应头携带Allow-controll-Access-Origin字段(为*或者是origin的值),之后的请求就像简单请求一样,携带origin字段。
请求头响应头过程:https://www.jianshu.com/p/b6520a7fb386

上一篇 下一篇

猜你喜欢

热点阅读