axios或者ajax请求跨域导致的options预发送请求

原因

  • 原因是浏览器对简单跨域请求和复杂跨域请求的处理区别

为什么出现OPTIONS请求

  • 多数情况我们自定义了请求头 服务器和浏览器之间的请求头方式不一致导致会出现options预检请求preflighted request询问服务器对跨域请求的支持情况

  • “需预检的请求”要求必须首先使用 OPTIONS 方法发起一个预检请求到服务器,以获知服务器是否允许该实际请求。"预检请求“的使用,可以避免跨域请求对服务器的用户数据产生未预期的影响。

  • 当请求满足下述任一条件时,即应首先发送预检请求:

  • 使用了下面任一 HTTP 方法:

  • 人为设置了对 CORS 安全的首部字段集合之外的其他首部字段。该集合为:

  • Content-Type 的值不属于下列之一:

    • application/x-www-form-urlencoded
    • multipart/form-data
    • text/plain
  • 请求中的XMLHttpRequestUpload 对象注册了任意多个事件监听器。

  • 请求中使用了ReadableStream对象。

参考 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容