快速理解OPTIONS请求

devtools/2024/10/15 18:12:06/
http://www.w3.org/2000/svg" style="display: none;">

快速理解OPTIONS请求

  • 简述
  • 实际遇到的问题

简述

OPTIONS请求常被用作一种“预检”请求,以检查实际请求(如POST或PUT)是否可以被服务器接受。
为什么要有OPTIONS请求?
比如当一个POST请求比较复杂时,传输一个POST请求比较消耗带宽及性能,若被拦截再返回,这样子十分消耗资源。于是可以采用更加轻量化的OPTIONS请求去预检。当OPTIONS请求出现问题时,将不再执行实际的POST请求,这样可以提升性能,特别是遇到跨域问题的时候。
什么时候去发送OPTIONS请求?
这通常不需要在代码里主动发送OPTIONS请求,浏览器若判断某个请求(如复杂的POST等)比较复杂的时候,会自动发送OPTIONS请求进行预检(由浏览器自动控制其发送)。若预检失败,则不发送实际请求。

具体什么情况去发送OPTIONS,这是由浏览器决定的,没必要深究,网上资料也很多

实际遇到的问题

这就很好理解了,为什么我就发了一个post,会出现2个请求,因为其中一个是OPTIONS请求,另外一个是POST
https://i-blog.csdnimg.cn/direct/b2d2e2d929f34d18bc45e642967d87c8.png" alt="在这里插入图片描述" />
而一般情况下,我发一个post请求,就只有1个post请求(是因为浏览器判断该请求比较简单)

既然是浏览器自动发送,那为什么还要考虑OPTIONS请求呢?
比如后端springboot工程中,会有拦截器,假如一个未登录用户想要请求接口的时候,那就做一个拦截的操作。确保只有登录后,才能访问除登录以外的接口。
只有登录并保存有Session信息的用户,才能访问相应的接口,那么就意味着前端需要传输cookie给后端验证身份,后端才能获取到对应的session。
然而OPTIONS请求通常不携带cookie,那样后端也没法获取session,会被自定义的Session拦截器拦截。即使,前后端代码中设置了允许携带cookie。

解决方法
后端拦截器除了对登录接口login放行,还需要对OPTIONS请求放行
https://i-blog.csdnimg.cn/direct/59faecd80cf84bad9833279e7fc07a8b.png" alt="在这里插入图片描述" />


http://www.ppmy.cn/devtools/126282.html

相关文章

(2023.12.21)【小编推荐】ThinkPHP5.x + VUE2.0前后端分离框架通用后台源码.zip

网盘:小拼云盘(2023.12.21)【小编推荐】ThinkPHP5.x VUE2.0前后端分离框架通用后台源码.zip网盘:小拼云盘 https://pan.notestore.cn/s.html?id26

如何指定this的值

1. 函数调用时指定 call -- 接收一个参数列表 apply -- 接收一个参数数组 2. 创建时指定this的值 bind -- 返回一个函数 传参方式与call相同 箭头函数 -- 其this值取决于上级作用域中的this值 <script>// 如何指定this的值// 1. 调用时指定this// 2. 创建时指定th…

Spring Boot洗衣店订单系统:数据驱动的决策

3系统分析 3.1可行性分析 通过对本洗衣店订单管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本洗衣店订单管理系统采用JAVA作为开发语言&#xff0c;S…

Spring MVC:精通JSON数据返回的几种高效方式

前言 在实际开发中&#xff0c;我们在前后端传送数据通常使用Json格式&#xff0c;而在Spring MVC中返回Json格式的方式有多种&#xff0c;接下来我将介绍其中一些。 准备工作 为了演示Json格式的数据&#xff0c;我们准备一个实体类&#xff0c;例如User&#xff0c;这些可以测…

Unity MMORPG 背包系统如何设计

MMORPG游戏中背包系统是很重要的一个模块, 大部分的背包系统的讲解&#xff0c;都是讲如何设计UI&#xff0c;如何显示这些&#xff0c;其实这些东西并不是背包系统的核心&#xff0c;接下来我们来分析一下背包系统的数据结构如何设计&#xff0c;能让策划和程序很好的工作,以及…

深度学习模型新手入门指南

深度学习模型新手入门指南 近年来&#xff0c;深度学习已经成为人工智能和机器学习领域的热点话题。作为一种模仿人脑结构的计算模型&#xff0c;深度学习在图像识别、自然语言处理等诸多领域展现出了强大的能力。本指南将帮助新手理解深度学习的基本概念和技术要点&#xff0…

无需复杂计算!如何用“加法”打造高效而低功耗的语言模型

当我们聊到人工智能特别是语言模型时,大家脑海中可能浮现的都是庞大的计算能力、高能耗的服务器群。然而,最近有一篇有趣的论文《Addition Is All You Need for Energy-Efficient Language Models》(加法才是低能耗语言模型的关键)却颠覆了我们对语言模型的传统认知。那么,…

Linux 安装部署及使用Containerd容器管理工具 ~ 保姆级

目录 实验环境&#xff1a; &#xff08;1&#xff09;一台centos7.6 &#xff08;2&#xff09;关闭防火墙和selinux &#xff08;3&#xff09;可以连接外网 &#xff08;4&#xff09;配置公网仓库 1.部署containerd服务 (1)安装yum-util (2)添加阿里云 docker仓库 …