什么是预请求
当提到预请求,我们可以把请求分成两大类:简单请求(simple requests)
和预请求(preflighted requests)
简单请求 - simple requests
简单地说,简单请求就是不会触发预请求检查(preflight check)
简单请求的定义需要满足以下几个标准
请求方法为以下几种之一
- GET
- HEAD
- POST
请求头一定只能有以下几种
- Accept
- Accept-Language
- Content-Language
- Content-Type (但只能为
application/x-www-form-urlencoded
、multipart/form-data
、text/plain
- Last-Event-ID
- DPR
- Save-Data
- Viewport-Width
- Width
- 在请求中使用的任何XMLHttpRequestUpload对象上都没有注册事件监听器;可以使用
XMLHttpRequest.upload
访问这些属性 - 在这个请求中没有
ReadableStream
对象被使用
预请求 - preflight requests
不为简单请求的,自然就是预请求。
浏览器会在发送原请求之前,发送一个OPTIONS请求来确定接下来的原请求是不是能够安全地发起。
最常见的预请求例子就是,原请求的方法是DELETE
、PUT
或其他可以修改服务器数据的方法(根据Method语义而定),或者附带了一些非CORS安全的请求头
原文链接: