原文:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
当请求满足下述任一条件时,即应首先发送预检请求:
- 使用了下面任一 HTTP 方法:
- PUT
- DELETE
- CONNECT
- OPTIONS
- TRACE
- PATCH
- 人为设置了对 CORS 安全的首部字段集合之外的其他首部字段。该集合为:
- Accept
- Accept-Language
- Content-Language
- Content-Type (需要注意额外的限制)
- DPR
- Downlink
- Save-Data
- Viewport-Width
- Width
- Content-Type 的值不属于下列之一:
- application/x-www-form-urlencoded
- multipart/form-data
- text/plain
- 请求中的XMLHttpRequestUpload 对象注册了任意多个事件监听器。
- 请求中使用了ReadableStream对象。
XMLHttpRequestUpload 对象注册了任意多个事件监听器,如上传进度监听:
var xhr = new XMLHttpRequest();
xhr.upload.onprogress = function (e) {}
这是浏览器默认行为,无法取消,需要接口针对OPTIONS
请求做处理