当前位置: 首页 > news >正文

Javaweb————什么是OPTIONS预检请求

🍕🍕🍕前面我们已经介绍过HTTP请求的九种方式,这篇文章就来着重介绍一下九种方式中的OPTIONS预检请求,这个请求在跨域资源请求中发挥着重要作用

🏍️🏍️🏍️什么是 OPTIONS 预检请求?

预检请求是浏览器在发送某些跨域请求之前,会发送一个 OPTIONS 请求,目的是为了确认服务器是否允许该跨域请求。

🏍️🏍️🏍️什么情况下会触发预检请求?

❤️❤️❤️1. 发送非简单请求时

简单请求包括 GET、HEAD、POST,因此,当发送除了这三个方法之外的请求时,例如 PUT、DELETE、PATCH,浏览器会先发送一个 OPTIONS 请求,询问服务器是否允许该请求。

❤️❤️❤️2. Content-Type 为 application/json 时

当 Content-Type为 application/json 时也会触发预检请求, 而值为 application/x-www-form-urlencoded、multipart/form-data、text/plain时则不会触发预检请求。

❤️❤️❤️3. 当存在自定义请求头时

当请求头中存在自定义请求头时或者在标准请求头中设置非标准内容时,也会触发预检请求。

OPTIONS 预检请求流程
OPTIONS 请求会包含一下头部信息:

Origin:请求来源的域名
Access-Control-Request-Method: 实际请求所使用的 HTTP 方法
Access-Control-Request-Headers:实际请求所携带的自定义请求头
服务器需要在响应头中返回一些 CORS 相关的头部信息,例如:

Access-Control-Allow-Origin:允许跨域请求的域名
Access-Control-Allow-Methods:允许跨域请求的方法
Access-Control-Allow-Headers:允许跨域请求的自定义请求头

下图是京东商城的首页的某个服务,可以看出允许跨域请求的域名是所有(*号),还可以看到允许的自定义请求头以及允许跨域请求的方法是GET,POST和OPTIONS

注意并不是所有跨域请求的域名都是*号,有的网址只指定了特定的域名可以进行跨域请求
在这里插入图片描述

如果 HTTP 请求满足服务器返回的响应头中的信息, 即服务器允许当前请求的跨域访问,那么浏览器才会发送实际的 HTTP 请求。否则,浏览器会拒绝该请求,并在控制台中输出报错信息。

🏍️🏍️🏍️预检请求的缓存

预检请求并不会每次都发生,是因为浏览器会对预检请求进行缓存,服务器通过设置 Access-Control-Max-Age 来指定预检请求的缓存时间。

如果设置为 86400,指 24 小时内不再预检。

如果设置为 -1,则表示不缓存,每次请求前都会发送预检请求。

http://www.dtcms.com/a/305724.html

相关文章:

  • 2025年6月数据挖掘顶刊TKDE研究热点有哪些?
  • 磁悬浮技术原理
  • 自动化与配置管理工具 ——Ansible
  • spark入门-helloword
  • React 闭包陷阱及解决方案与 React 16/17/18 版本区别
  • 5种安全方法:如何删除三星手机上的所有内容
  • 三轴云台之减震系统篇
  • OpenEuler 安装 apache + php8 不解析php文件的处理
  • Apache Ignite 2.8 引入的新指标系统(New Metrics System)的完整说明
  • SpringBoot+Three.js打造3D看房系统
  • 深入理解 Doris Compaction:提升查询性能的幕后功臣
  • 深入剖析 Spark Shuffle 机制:从原理到实战优化
  • 【CVPR2025】FlowRAM:用区域感知与流匹配加速高精度机器人操作策略学习
  • linux 执行sh脚本,提示$‘\r‘: command not found
  • (8)(8.6) H-流量(光学流量和距离传感器模块)
  • 自动化测试实战—petstore实战
  • SparkSQL_数组排序函数 array_sort用法详解
  • 快秀录屏记录高光时刻,分享游戏激情
  • 少林寺用什么数据库?
  • 传统ERP迁移SAP Cloud ERP现代化升级:Kyano Crossway一种更智能的迁移方案
  • 【C++详解】深入解析多态 虚函数、虚函数重写、纯虚函数和抽象类、多态原理、重载/重写/隐藏的对⽐
  • Python字典高级映射:键到多值映射的工程实践
  • 智能Agent场景实战指南 Day 26:Agent评估与性能优化
  • SAP ABAP锁机制程序锁
  • LeetCode热题100--148. 排序链表--中等
  • Linux730 tr:-d /-s;sort:-r,-n,-R,-o,-t,-k,-u;bash;cut:-d,-c;tee -a;uniq -c -i
  • AD域设计与管理-批量创建域用户
  • 大语言模型API付费?
  • 【Qt】QTime::toString(“hh:mm:ss.zzz“) 显示乱码的原因与解决方案
  • MySQL EXPLAIN详解与高效调优方法