MENU

CORS 预检请求(preflight request)

2018 年 09 月 20 日 • 开发

内容来源

简介

CORS 预检请求主要用于检测服务器是否支持 CORS(跨域资源共享)。
当有必要的时候,浏览器会自动发出一个预检请求;因此在正常情况下,前端开发者不需要自己去发这样的请求。

触发条件

某些请求(以下称其为“简单请求”)不会触发 CORS 预检请求。
若请求满足所有下述条件,则该请求可视为“简单请求”:

  • 使用下列请求方式之一

    • GET
    • HEAD
    • POST
  • 除了被用户代理自动设置的 Header(例如 Connection、User-Agent)和其他不在 Fetch 规范中定义的 禁用的 Header 名称 ,允许人为设置下列 对 CORS 安全的 Header 字段

    • Accept
    • Accept-Language
    • Content-Language
    • Content-Type(需要注意额外的限制)
  • 在 Header 中,Content-Type 的值为下列之一

    • text/plain
    • multipart/form-data
    • application/x-www-form-urlencoded
  • 请求中的任意 XMLHttpRequest 对象均没有注册任何事件监听器;可以通过 XMLHttpRequest.upload 属性访问 XMLHttpRequest 对象。
  • 请求中没有使用 ReadableStream 对象。
最后编辑于: 2021 年 12 月 29 日