比尔萄堡

上帝说: “要有光” 于是,就有了光。


  • 首页

  • 归档

  • 关于我

  • 公益404

  • 搜索

OPTIONS预检请求(preflight request)

时间: 2022-07-29 分类: 我的小脑/网络   字数: 458 字 阅读: 1分钟 阅读次数:

OPTIONS预检请求(preflight request)

跨域的情况下,发起的非简单请求,浏览器会发送Options请求,从而获知服务端是否允许该跨源请求。服务器确认允许之后,才发起实际的 HTTP 请求。

简单请求的定义:

  • 使用下列方法之一:
    • GET
    • HEAD
    • POST
  • 除了被用户代理自动设置的首部字段(例如 Connection,User-Agent)和在 Fetch 规范中定义为 禁用首部名称 的其他首部,允许人为设置的字段为 Fetch 规范定义的 对 CORS 安全的首部字段集合。该集合为:
    • Accept
    • Accept-Language
    • Content-Language
    • Content-Type(需要注意额外的限制)
  • Content-Type 的值仅限于下列三者之一:
    • text/plain
    • multipart/form-data
    • application/x-www-form-urlencoded
  • 请求中的任意 XMLHttpRequest 对象均没有注册任何事件监听器;XMLHttpRequest 对象可以使用 XMLHttpRequest.upload 属性访问。
  • 请求中没有使用 ReadableStream 对象。

避免OPTIONS preflight request

请求量大时,浪费流量,也增加日志开销。有几种方式规避: - 改变请求为简单请求 - 响应header设置 Access-Control-Max-Age 缓存预检请求 - 从负载均衡层(如Nginx)直接返回204(不推荐)

关联文档

MDN CORS

手动发起OPTIONS请求

除了method为OPTIONS,header还需要添加三个字段: - Access-Control-Request-Method - Access-Control-Request-Headers - Origin

#http#

标题:OPTIONS预检请求(preflight request)

作者:训导主任林作栋

声明: 本博客文章除特别声明外,均采用 CC BY-NC-SA 3.0许可协议,转载请注明出处!

创作实属不易,如有帮助,那就打赏博主些许茶钱吧 ^_^
WeChat Pay

微信打赏

Alipay

支付宝打赏

docker vs containerd
记一次fluentd部分pod不推送数据
训导主任林作栋

训导主任林作栋

戏谑的码农,北野武的拥趸,李安的迷弟,伍佰的Fans

55 日志
23 分类
62 标签
豆瓣
友情链接
  • Obsidian
  • V2EX
  • 关注黑客与极客
  • 廖雪峰
标签云
  • Linux 6
  • K8s 5
  • 数据库 5
  • Golang 4
  • Etcd 3
  • Mysql 3
  • Ai 2
  • Gitlab 2
  • Postgres 2
  • 前端 2
© 2010 - 2024 比尔萄堡
Powered by - Hugo v0.58.2 / Theme by - NexT
/
Storage by Vercel / 刘 ICP 备 18047355 号
0%