什么是简单请求?简单请求和跨域的关系

本文解释了为何简单请求不会触发预检请求,条件包括请求方法(如GET、POST)、不包含自定义请求头(如Content-Type)以及特定的Content-Type值。非简单请求会进行预检以确保跨域安全性。详尽探讨了CORS的相关概念和浏览器行为。
摘要由CSDN通过智能技术生成

简单请求不会发生跨域 cors 预检请求,预检请求 Preflight Request 是用于验证是否允许非简单请求的一种 OPTIONS 请求。预检请求指示为了减少跨域请求的复杂性和延迟,不是说简单请求就一定不会报跨域错误。而是非简单请求跨域的概率大一些,所以要预检。预检请求是 CORS 机制的一部分,用于确保跨域请求的安全性,预检失败,不会发送实际的跨域请求。

简单请求的条件
(1)head、get、post是这三种方法之一【注意,我们常见的post请求不会发送预检请求】或者

(2)没有自定义 http 请求头,除了下面的字段

Accept
Accept-Language
Content-Language
Content-Type【只允许3个类型】
Range


话虽然这样说,但是实际的简单请求头还有很多字段,比如 origin 、host等【如下图也是一个简单请求的头部】这些字段是浏览器自动设置的。下面的 cache-control 也是浏览器自动加的。

(3)content-type 仅限于 application/x-www-form-urlencoded、multipart/form-data、text/plain

注意这三个条件是或的关系,如果 get 请求加上了自定义的请求头,那么就不是简单请求了。或者,简单请求的 content-type 设置了其他值也就不是简单请求了。简单请求的跨域请求不会发送预检请求。

请看官网

跨源资源共享(CORS) - HTTP | MDN

我的这篇文章有关于跨域的详细的解析,欢迎关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值