首页 > 其他分享 >POST请求为什么需要执行两次

POST请求为什么需要执行两次

时间:2023-12-18 17:59:35浏览次数:31  
标签:Control 请求 自定义 两次 Access POST 跨域

前端POST请求服务端接口时,为什么需要执行两次?

 

第一次:

General

Request Method:OPTIONS Status Code:204 No Content

Response Headers

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:access-control-allow-methods,authorization,content-type
Access-Control-Allow-Methods:GET,HEAD,PUT,POST,DELETE,PATCH
Access-Control-Allow-Origin:https://xxxxxxxxx.com
Date:Mon, 18 Dec 2023 09:24:21 GMT
Strict-Transport-Security:max-age=15724800; includeSubDomains
Vary:Origin

作用:

1、复杂请求

请求中有自定义HTTP头部,所谓的自定义头部,在实际的项目里,我们经常会遇到需要在header头部加上一些token或者其他的用户信息,用来做用户信息的校验。

只要是带自定义header的跨域请求,在发送真实请求前都会先发送OPTIONS请求,浏览器根据OPTIONS请求返回的结果来决定是否继续发送真实的请求进行跨域资源访问。所以复杂请求肯定会两次请求服务端。

 

2、发生了跨域。

在跨域请求中,浏览器为了确保安全,会首先发送一个OPTIONS请求,也被称为预检请求。如果预检请求成功,浏览器才会发出实际的POST请求。

 

options请求有什么作用:

官方将头部带自定义信息的请求方式称为带预检(preflighted)的跨域请求。在实际调用接口之前,会首先发出一个options请求,检测服务端是否支持真实的请求进行跨域的请求。

 

标签:Control,请求,自定义,两次,Access,POST,跨域
From: https://www.cnblogs.com/use-D/p/17897355.html

相关文章

  • IDEA插件中的Postman!
    Postman是大家最常用的API调试工具,那么有没有一种方法可以不用手动写入接口到Postman,即可进行接口调试操作?今天给大家推荐一款IDEA插件:ApipostHelper,写完代码就可以调试接口并一键生成接口文档!而且还可以根据已有的方法帮助您快速生成url和params。更重要的是他完全免费!Apipost......
  • IDEA插件中的Postman!
    Postman是大家最常用的API调试工具,那么有没有一种方法可以不用手动写入接口到Postman,即可进行接口调试操作?今天给大家推荐一款IDEA插件:ApipostHelper,写完代码就可以调试接口并一键生成接口文档!而且还可以根据已有的方法帮助您快速生成url和params。更重要的是他完全免费!Apipos......
  • 使用postman做接口测试
    (目录)一、postman的基础应用1.请求部分2.请求部分body3.响应部分二、接口关联接口关联:下一个接口的参数使用了上一个接口的返回值1.使用json.parse格式首先找到有返回值的接口的Tests,将其参数设置为全局变量,以便其他接口使用设置全局变量pm.globals.set()使用......
  • 为什么我的请求路径中多了/ 还是能正确请求到我的接口??
    问题:最近测试时发现postman输入了错误了请求路径也能正确路由到我后端的接口,这是为什么呢?举例:请求路径/rest/ceshi/testa/testb?id=1是后端正确的url当把路径中随意/处再增加多个/时,例如请求路径:/rest/ceshi///testa/testb?id=1,任然能正常请求到接口。......
  • API调试神器!Apipost
    前言 Apipost是一款支持RESTfulAPI、SOAPAPI、GraphQLAPI等多种API类型,支持HTTPS、WebSocket、gRPC多种通信协议的API调试工具。除此之外,Apipost还提供了自动化测试、团队协作、等多种功能。这些丰富的功能简化了工作流程,提高了研发效率,这也让Apipost成为开发人员首选的A......
  • PostgreSQL PG_DUMP 工作失败了怎么回事及如何处理
    最近群里有同学问关于pg_dump失败的问题,但是最近老眼昏花脑子搭错线,看成mysqldump还傻傻的问人家mysql那个版本。所以基于这个pg_dump的问题的写一篇,pgdump对比mysqldump来说,的确从功能性和性能方面要比mysql给的逻辑备份的方式要好的多,这里我们可以稍微浅浅的比较一下1 pg_dum......
  • React useEffect 在组件挂载时运行了两次
    在使用useEffect这个hook时,发现useEffect会执行2次useEffect(()=>{console.log("执行useEffect");},[]);控制台输出:执行useEffect执行useEffect查看疑难解答官方文档,官方解释如下:在开发环境下,如果开启严格模式,React会在实际运行setup之前额外运行一次......
  • jmeter 基本请求
    jmeter get请求普通的get请求,是客户端去服务器获取资源的,可以直接在浏览器中访问,获取到服务端的响应的。 post请求,参数为k=v的POST接口post请求方式常用数据格式第一种:content-type:x-www-form-urlencoded,content-type:x-www-form-urlencoded即表单形式,数据格式类型:u......
  • ROW_NUMBER 开窗函数优化方案(Oracle && PostgreSQL 性能比对)
    帮朋友优化一条很简单的窗口函数ROW_NUMBER()OVER(),Oracle迁移PostgreSQL项目。原始SQL和执行计划STUDENT_BAK表我模拟的数据,3千万行数据。SELECTSTU_ID,STU_NAME,STU_SEX,STU_AGE,STU_DATE,STU_CLASSID,STU_SALFROM(SELECTSB.*, ROW_NUMBER()OVER(P......
  • C# TcpClient异常 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时
    //C#TcpClient抛出异常Exceptionthrown:'System.Net.Sockets.SocketException'inSystem.dll由于套接字没有连接并且(当使用一个sendto调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。经查,winsock错误号:10057网上看到一些文章,通常是收发的时候,错误......