netnr 2019-11-27 14:40:06 2019-11-29 06:46:28 👁1K 💬0

原文: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请求做处理


链接