HTTP 的 OPTIONS 方法

什么是options请求?

  • 官方解释:用于获取目的资源所支持的通信选项。

用于检测服务端对接口等资源的支持情况,包括各种请求方法、头部的支持情况,仅作查询使用

options请求有什么特点

选项 有/无 说明
Request has body No 没有请求体
Successful response has body No 成功的响应没有响应体
Safe Yes 安全
Idempotent Yes 密等性,不变性,同一个接口请求多少次都一样
Cacheable No 不能缓存
Allowed in HTML forms No 不能在表单里使用

什么时候有options请求

首先我们要了解 XMLHttpRequest 是遵守同源策略的,当我们需要请求的资源与本资源所在服务器不同的域、协议和端口时,我们就会发起一个跨域http请求。

规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。服务器确认允许之后,才发起实际的 HTTP 请求。

跨域请求分为两种:简单请求和预测请求,简单请求不会触发options请求

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

  1. 使用了下面任一 HTTP 方法:

    • PUT
    • DELETE
    • CONNECT
    • OPTIONS
    • TRACE
    • PATCH
  2. 有自定义请求头

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

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

  5. 请求中使用了ReadableStream对象。

参考

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

推荐阅读更多精彩内容

  • 工作流程 一次HTTP操作称为一个事务,其工作过程可分为四步: 1)首先客户机与服务器需要建立连接。只要单击某个超...
    保川阅读 10,061评论 2 14
  • 引用自HTTP访问控制(CORS) 当 Web 资源请求由其它域名或端口提供的资源时,会发起跨域 HTTP 请求(...
    有涯逐无涯阅读 7,368评论 0 4
  • 1. 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScri...
    cbw100阅读 11,475评论 2 86
  • 前言:最近发现自己在网络相关这一块基础很是欠缺,所以准备花时间了解一下,本文主要是讲http协议的一些基础,和一些...
    justCode_阅读 6,256评论 0 23
  • 3月25日 周一 HTTP缓存 ·加速资源 更好地利用缓存资源,可以提高网站的性能和响应速度。为了优化缓存,过期时...
    Aniwer阅读 3,401评论 0 0