跨域请求避免OPTIONS请求(预检请求)

2023-11-09

有时候前后端分离域名不一致,会造成跨域请求
而跨域请求有时候会自动发起两次请求,第一次为预检请求,即OPTIONS请求
一般来说使用 application/json 的 post 请求是必然会带入OPTIONS请求

OPTIONS请求也被称为预检请求,主要用于获知服务端支持的HTTP请求方法。跨域资源共享(CORS)标准新增了一组 HTTP 首部字段,配合预检请求可获知服务器允许哪些源站通过浏览器有权限访问哪些资源。

但是在有些get请求中也会OPTIONS请求,这里补充下回发生options的情况
当发生以下情况时,客户端就会自动发起OPTIONS预检请求
  1. 使用以下任一HTTP 方法:PUT/DELETE/CONNECT/OPTIONS/TRACE/PATCH
  2. 设置了以下头部字段以外的自定义字段:Accept/Accept-Language/Content-Language/Content-Type/DPR/Downlink/Save-Data/Viewport-Width/Width
  3. Content-Type 的值不属于下列之一: application/x-www-form-urlencoded、multipart/form-data、text/plain
  4. 请求中的任意XMLHttpRequestUpload 对象均没有注册任何事件监听器;XMLHttpRequestUpload 对象可以使用 XMLHttpRequest.upload 属性访问
  5. 请求中没有使用 ReadableStream 对象

解决方法:调整请求方法、去除自定义header、修改Content-Type,基本可以避免该请求发出OPTIONS预检请求。

举个例子:
  1. 在header加入自定义参数token
    在这里插入图片描述

  2. 可以看到有options预检
    在这里插入图片描述

  3. 去除自定义header
    在这里插入图片描述

  4. 再次请求没有预检请求
    在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跨域请求避免OPTIONS请求(预检请求) 的相关文章

  • 在 Rest 中使用 POST 进行删除/更新?

    我明白 从接受的答案HTTP 和 REST 有什么区别 https stackoverflow com questions 2190836 what is the difference between http and rest that
  • 使用 REST API 进行正确的会话管理

    我已经完成了 RESTful API 的设计 其中我使用作为参数发送的 API 令牌对每个请求进行身份验证 现在我想创建一个客户端界面 我想知道什么是管理每个客户端的会话的正确安全方法browser客户 我想过一个流程来保持服务器端无状态
  • 在获得响应之前发出多个请求

    当并行发送多个请求时 在获得响应之前 我无法理解 HTTP 的工作原理 有两种情况 1 With Connection Keep Alive 根据HTTP规范 http www w3 org Protocols rfc2616 rfc261
  • 电话链接在 iframe 中不起作用,但在 iOS 9 Web 中的 div 中起作用。如何使电话链接在 iOS 9 safari 中正常工作?

    您好 我正在尝试 iOS9 中 iframe 内的电话链接 iOS9 中的 safari 中无法打开手机应用程序 当我在里面尝试相同的链接时 它就在那里工作 我正在尝试下面的锚标记 将此代码放入 div 中时会打开手机应用程序 但同样的代码
  • 摆脱浏览器控制台中的 401(未经授权)ajax 错误

    我正在使用 javascript 通过 api 调用jQuery ajax http api jquery com jQuery ajax 称呼 如果用户未经过身份验证 API 会响应 401 并且我只想针对此调用忽略此错误 我已经尝试了
  • WebUSB 和 RFID 读取器

    我想知道是否有人有让 RFID 读取器通过 WebUSB 工作的经验 我使用的阅读器是https www parallax com product 28340 https www parallax com product 28340 根据我
  • Node.js 中的 HTTPS 代理服务器

    我正在开发一个node js代理服务器应用程序 我希望它支持HTTP and HTTPS SSL 协议 作为服务器 我目前正在使用node http proxy https github com nodejitsu node http pr
  • 如何从 Kubernetes 服务背后的 HTTP 请求读取客户端 IP 地址?

    我的 Web 应用程序作为 Kubernetes pod 在 SSL 的 nginx 反向代理后面运行 代理和我的应用程序都使用 Kubernetes 服务进行负载平衡 如所述here http blog kubernetes io 201
  • 反向代理受 NTLM 保护的网站

    如何将请求代理到受 NTLM 保护的网站 例如团队基金会 and 共享点 我不断得到401 身份验证错误 根据这篇 Microsoft TechNet 文章 https www microsoft com technet prodtechn
  • 有人成功用 Robolectric 模拟 HttpRequests 吗?

    我刚刚开始使用 Robolectric 模拟大多数 Android 类似乎工作正常 但是当我的测试类尝试创建 DefaultHttpClient 时 它会收到可怕的 Stub 错误 被测试的类在这一行失败 HttpClient httpcl
  • C# - 如何进行 HTTP 调用

    我想对网站进行 HTTP 调用 我只需要点击 URL 不想上传或下载任何数据 最简单 最快的方法是什么 我尝试了下面的代码 但它很慢 并且在第二次重复请求后 它只是超时 59 秒 然后恢复 WebRequest webRequest Web
  • ReverseProxy取决于golang中的request.Body

    我想构建一个 http 反向代理 它检查 HTTP 主体 然后将 HTTP 请求发送到它的上游服务器 你怎么能在 Go 中做到这一点 初始尝试 如下 失败 因为 ReverseProxy 复制传入请求 修改它并发送 但正文已被读取 func
  • asp.NET 2.0网站无法访问App_Code中的类

    将我的网站部署到服务器后 我在访问课程时遇到问题 请注意 这是一个网络Site不是网络应用 错误是 编译器错误消息 CS0246 找不到类型或命名空间名称 Order 是否缺少 using 指令或程序集引用 版本信息 Microsoft N
  • Spring webflow 应用程序:HTTP 302 暂时移动

    我的 java 应用程序中的每个请求都会生成另外 2 个带有 HTTP 302 错误的请求 例如 如果请求查看名为板 html 这个请求是从首页 html 我收到按以下顺序生成的 3 个请求 POST home html 302 Moved
  • 使用 Google OAuth2.0 时出现错误请求

    从 Salesforce 中使用 Google OAuth 时 我收到 400 错误请求 以下错误与无效的 grant type 有关 但如果您查看 使用刷新令牌 下的文档 您会发现它是正确的 https developers google
  • Vertx HttpClient getNow 不工作

    我的 vertx HttpClient 有问题 下面的代码显示使用 vertx 和纯 java 测试 GET Vertx vertx Vertx vertx HttpClientOptions options new HttpClientO
  • 服务器返回网页 404,但页面在浏览器中显示正常 - 为什么?

    一个奇怪的网页横亘在我面前 作为一名开发人员 我必须解开这个谜团 在任何浏览器中访问网页时 一切似乎都很正常 网页按预期显示 但是当查看控制台时 服务器实际上返回了 404 状态代码 那么浏览器为什么要渲染页面呢 查看正文显示返回了有效的
  • asp.net core http 如果没有内容类型标头,则删除 `FromBody` 忽略

    我在 http 中使用 bodyDELETE要求 我知道目前删除主体是非标准的 但是允许的 使用时出现问题HttpClient它不允许删除请求的正文 我知道我可以使用SendAsync 但我宁愿让我的 API 更加灵活 我希望这个机构是可选
  • Go中如何自定义http.Client或http.Transport超时重试?

    我想实现一个自定义http Transport对于标准http Client 如果客户端超时 它将自动重试 附 由于某种原因 习俗http Transport is a 一定有 我已经查过了hashcorp go retryablehttp
  • Web Api - 不允许捕获 405 方法

    截至目前 Web api 应用程序针对 405 方法不允许错误返回以下响应正文 我正在尝试更改响应正文 但我不知道如何使用委托处理程序 ApiControllerActionSelector 或过滤器 谁能帮我捕获服务器端的 405 错误

随机推荐

  • mac中的IDEA的使用快捷键

    1 command F 在当前文件进行文本查找 2 command shift F 进行工程和模块中的文件搜索 3 command u 找到这个方法的接口 4 command option commad 找到这个接口的实现类 5 comma
  • javascript中做减法时,出现小数位增加bug

    这个bug是js固有的 浮点数精度不准 你可以用下面方法来解决 思路是先放大 求和 差 积等运算后再缩小 如 加法函数 用来得到精确的加法结果 说明 javascript的加法结果会有误差 在两个浮点数相加的时候会比较明显 这个函数返回较为
  • JPEG编码原理及文件格式及代码分析

    一 JPEG编码原理 首先我们先来看一下JPEG的编码原理图 如上图所示 下面进行逐步的分析 1 RGB gt YUV 首先为了降低互相的关联性 将RGB转换为YUV 这样就可以对亮度信号和色度信号进行分别的处理 2 零电平偏置下移 由于后
  • CreateEvent函数在多线程中使用及实例

    HANDLE CreateEvent LPSECURITY ATTRIBUTES lpEventAttributes BOOL bManualReset BOOL bInitialState LPCSTR lpName bManualRes
  • 8.7.1 makefile实例——项目中的总makefile

    Linux C程序设计王者归来 第8章构建makefile文件 makefile相当于一种脚本编程语言 用户在编写makefile的过程中可以使用变量 控制结构语句和函数等一般编程语言的特性 同时也可以执行shell指令 makefile诞
  • 2021年前端关注的8个技术趋势

    2020年也过去 我们一起解读一下整个2020年的前端技术的8个技术 并深度分析2021年大前端领域又有哪些顶级技术趋势 你不容错过 2020年注定是不平凡的一年 相信因为疫情很多程序员的工作和生活都受到了一定影响 其实现在前端的技术已经到
  • Minio控制台详细教程

    前言 此文讲解Minio控制台详细教程 可能会涉及到有些知识大家可能不懂情况 需要知道Minio兼容的是AMS S3对象存储服务 需要知道AMS S3对象存储服务是什么 里面涉及的到配置如何去配等等 https docs aws amazo
  • PHP html table下载为excel

    php下载头 header Content type application vnd ms excel header Content Disposition attachment filename test xls header Conte
  • 进程管理与内存管理

    谷歌官网 内存管理概览
  • STM32之RTC

    简介 STM32 的实时时钟 RTC 是一个独立的定时器 STM32 的 RTC 模块拥有一组连续计数的计数器 在相应软件配置下 可提供时钟日历的功能 修改计数器的值可以重新设置系统当前的时间和日期 框图 相关寄存器 控制寄存器 第 0 位
  • 网页的内联框架

    内联 网页里嵌套网页
  • 图解算法 -使用Python 学习笔记(3)

    图解算法 使用Python 学习笔记 3 排序算法 3 1认识排序 用以排序的依据是键 它所含的值被称为 键值 通常键值的数据类型有数值类型 中文字符串以及非中文字符串三种 其中中文字符串用该中文内码 如中文繁体BIG5码 中文简体GB码
  • ConcurrentHashMap面试知识的思维导图整理

    整理自文章https blog csdn net yunzhaji3762 article details 113623168 juc 有关介绍https blog csdn net abaidaye article details 123
  • 小伙伴们,赶紧,免费的视频托管。

    最近 朋友的公司培训频道要上在线视频功能 说自己找了一些行业解决方案 最后对比使用视频托管的方式比较省事 说白了就是省钱呗 挑来挑去 觉得感觉保利威视这家托管服务商的视频播放效果较好 并且功能相对多 比较符合当前项目需求 他在网站上注册的账
  • SpringBoot和Vue跨域问题

    Access to XMLHttpRequest at http localhost 8301 admin vod user info token admin token from origin http localhost 9528 ha
  • gateway 报错 reactor.core.Exceptions$ErrorCallbackNotImplemented

    生产环境好好的 突然前端请求全部跨域 请求 500 gateway 报错 reactor core Exceptions ErrorCallbackNotImplemented java lang IndexOutOfBoundsExcep
  • 困扰我两天的问题:StratifiedShuffleSplit与train_test_split创建的数据集为何训练结果不同?

    困扰我两天的问题 StratifiedShuffleSplit与train test split创建的数据集为何训练结果不同 让人头疼的问题 最近 我在进行卷积模型的分类任务时发现了一个StratifiedShuffleSplit函数的bu
  • js map遍历 修改对象里面的值_js map()处理数组和对象数据

    之前的文章梳理了JS数组与对象属性的遍历方法 本文介绍专门用以遍历并处理数据的map 方法 一 原生map map 是数组的一个方法 它创建一个新数组 其结果是该数组中的每个元素都调用一个提供的函数后返回的结果 map 里面的处理函数接受三
  • 第十章 MyBatis与Spring的整合

    单选题 1 进行MyBatis与Spring的整合配置文件编写时 不包括有 7分 A db properties B applicationContext xml C mybatis config xml D springmvc confi
  • 跨域请求避免OPTIONS请求(预检请求)

    有时候前后端分离域名不一致 会造成跨域请求 而跨域请求有时候会自动发起两次请求 第一次为预检请求 即OPTIONS请求 一般来说使用 application json 的 post 请求是必然会带入OPTIONS请求 OPTIONS请求也被