OPTIONS请求(跨域预检查)

一、什么是OPTIONS请求?

OPTIONS 请求方式是 HTTP 协议中的一种,主要用于 响应头中获取服务器支持的HTTP请求方式

  • OPTIONS 请求方式是 浏览级行为,当请求存在跨域时,根据浏览器的同源策略,浏览器会对 ajax 请求发送 OPTIONS 请求进行预检查
  • 一般只限制 ajax 请求,不会限制 link、img、script、iframe 请求
  • 服务器后端之间的跨域请求时不用发 OPTIONS 请求的。

在这里插入图片描述

OPTIONS请求特性:

  • 没有请求体
  • 没有响应体
  • 安全
  • 幂等性;(同一个接口请求多少次都一样)
  • 不能缓存
  • 不能在表单里面使用

二、简单请求、复杂请求

某些请求不会触发 CORS 预检请求,这样的请求一般称为 简单请求,而会触发预检的请求则是 复杂请求

简单请求:

(以下条件需全部满足)

  • 请求方式: GET、HEAD、POST。

  • 设置规范集合之内的首部字段,如:Accept、Accept-Language、Content-Language、Content-Type、DPR、Downlink、Save-Data、Viewport-Width、Width。

  • Conten-Type 的值仅限于下列三者之一,即:application/x-www-form-urlencodedmultipart/form-datatext/plain

    (注意:如果 GET、POST 请求使用了 Content-Type: application/jsontoken类 的请求头,也会触发 OPTIONS 请求预检)

  • 请求中的任意 XMLHttpRequestUpload 对象均没有注册任何事件监听器。

  • 请求中没有使用 ReadableStream 对象。

复杂请求:

(以下条件满足任意一项)

  • 请求方式:PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH。
  • 人为设置了简单请求之外的首部字段。
  • Content-Type 的值不属于下列三者之一:application/x-www-form-urlencoded、multipart/form-data、text/plain。

三、特定的请求头、响应头

特定的请求头:

  • Access-Control-Request-Method:告知服务器,实际请求将使用的请求方式(如:GET、POST等)。

    例如:Access-Control-Request-Method: GET

  • Access-Control-Request-Headers:告知服务器,实际请求将携带的自定义请求首部字段。

    例如:Access-Control-Request-Headers: token

特定的响应头:

  • Access-Control-Allow-Methods:允许客户端使用的请求方式。

    例如:Access-Control-Allow-Methods: PUT

  • Access-Control-Allow-Origin:允许跨域请求的域名,如果要允许所有域名则设置为 *。

    例如:Access-Control-Allow-Origin: http://localhost:8080

  • Access-Control-Allow-Headers:允许请求携带的请求头。

    例如:Access-Control-Allow-Headers: token, Origin

  • Access-Control-Allow-Credentials:是否允许携带 cookie。

    例如:Access-Control-Allow-Credentials: true

  • Access-Control-Max-Age:指定了预检请求的结果能够被缓存多久,即多久发送一次OPTIONS请求。

    例如:Access-Control-Max-Age: 60(1分钟内不再发 options 请求)

整理完毕,完结撒花~🌻





参考地址:

1.什么是options请求?为什么会有options请求?https://blog.csdn.net/gwdgwd123/article/details/100554117

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿放下技术的小赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值