post为什么会发送两次请求详解

news2024/11/26 0:24:09

在这里插入图片描述

文章目录

  • 导文
  • 跨域请求的预检
  • 复杂请求的定义
  • 服务器响应预检请求
  • 总结


导文

在Web开发中,开发者可能会遇到POST请求被发送了两次的情况,如下图:
在这里插入图片描述
尤其是在处理跨域请求时。这种现象可能让开发者感到困惑,但实际上它是浏览器安全机制和跨域资源共享(CORS)规范的一部分。
在这里插入图片描述
因为在开发当中经常会遇到跨域请求的问题。当前端应用试图从一个源(origin)上的Web页面访问另一个源上的资源时,浏览器会执行跨域请求,其中POST请求常常会伴随着两次发送:一次OPTIONS请求(CORS预检)和一次实际的POST请求。

跨域请求的预检

当Web页面中的脚本尝试访问与页面本身不同源(即协议、域名或端口中至少有一个不同)的资源时,浏览器会执行一种称为“同源策略”的安全限制。然而,为了满足某些跨域交互的需求,浏览器引入了CORS(跨域资源共享)机制。

CORS中,当浏览器遇到某些类型的跨域请求(通常称为“复杂请求”)时,它会首先发送一个OPTIONS请求到目标服务器,询问是否允许该跨域请求。这个OPTIONS请求被称为“预检请求”(preflight request)。

复杂请求的定义

复杂请求是指那些不仅仅是简单的GET或POST请求的请求。以下情况通常被视为复杂请求:

  • 使用POSTPUTDELETEHTTP方法。
  • 请求中包含自定义的HTTP头字段。
  • 请求体(Body)中包含非文本数据(如JSONXML)。

当浏览器检测到跨域请求满足上述任何一个条件时,它就会发送一个OPTIONS预检请求。这个预检请求会包含一些特定的HTTP头字段,如Access-Control-Request-Method(表示将要使用的HTTP方法)和Access-Control-Request-Headers(表示将要使用的自定义头字段)。

服务器响应预检请求

服务器在接收到OPTIONS预检请求后,会根据其CORS配置来决定是否允许该跨域请求。如果允许,服务器会返回一个包含适当CORS头字段的响应,如Access-Control-Allow-Origin(表示允许哪些源的请求)和Access-Control-Allow-Methods(表示允许哪些HTTP方法)。

一旦服务器响应了预检请求并允许了跨域请求,浏览器就会发送实际的POST请求(或其他类型的请求)。

总结

当涉及到跨域请求,尤其是复杂请求时,POST请求可能会先发送一个OPTIONS预检请求,然后再发送实际的POST请求。这是浏览器安全机制和CORS规范的一部分,旨在确保跨域请求的安全性和合规性。开发者在处理这类请求时应该了解这一机制,并相应地配置服务器以支持CORS
整个完整的请求流程有如下图所示:
在这里插入图片描述

您好,我是肥晨。
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1835313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux安装MySQL以及远程连接

1、Linux安装MySQL 1.1、准备解压包 MySQL5.x解压包 提取码:9y7n 1.2、通过rpm脚本安装 切记安装顺序:common --> libs --> client --> server 因为它们之间存在依赖关系,所以务必按照顺序安装 安装前请确保当前目录/文…

金融科技行业的融资趋势、投资者关注及未来预测

一、金融科技行业的融资趋势 金融科技行业的融资趋势近年来展现出强劲的增长势头,具体表现在以下几个方面: 融资规模持续扩大: 根据《全球金融科技投融资趋势报告(2023年上半年)》,2023年上半年全球金融科技行业投融资事件总次数…

防泄密解决方案

防泄密解决方案是一个系统性的策略,旨在保护敏感信息不被非法获取、泄露或滥用。以下是一个结构清晰、分点表示的防泄密解决方案,结合了参考文章中的关键信息和建议: 一、策略制定与政策明确 明确数据分类:将数据分为公开、内部…

【区块链】POS(Proof of Stake)权益证明算法深度解析

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 POS(Proof of Stake)权益证明算法深度解析引言1. POS基本…

【方法】如何隐藏和保护Excel表格中的敏感数据?

在工作中,很多人经常需要处理包含敏感信息的Excel表格。 为了确保这些数据的安全性,我们可以通过隐藏单元格、行和列,以及设置密码保护工作表的方法,来保护数据,下面一起来看看吧! 一、隐藏数据&#xff1…

微信商城源码带分销功能 支持微信小程序+公众号端 含详细图文搭建教程

分享一款微商城源码系统,不仅支持微信公众号端和小程序端二合一管理,带分销机制,集合了市面上电商系统的功能,并增加了多项全新特色功能,如多商户商家入驻、区域代理、收银台、互动直播等,为商家提供了全方…

Go——channel

channel是Go在语言层面提供的协程间的通信方式。通过channel我们可以实现多个协程之间的通信,并对协程进行并发控制。 使用注意: 管道没有缓冲区时,从管道中读取数据会阻塞,直到有协程向管道中写入数据。类似地,向管道…

动手学深度学习(Pytorch版)代码实践 -深度学习基础-13Kaggle竞赛:2020加州房价预测

13Kaggle竞赛:2020加州房价预测 # 导入所需的库 import numpy as np import pandas as pd import torch import hashlib import os import tarfile import zipfile import requests from torch import nn from d2l import torch as d2l# 读取训练和测试数据 train_…

哈尔滨等保测评流程

哈尔滨的等保测评程序是一项严格的、系统化的检测程序,其目的在于保证信息系统的安全、稳定。下面详细介绍了这个过程: 一、引言 随着信息技术的飞速发展,信息系统在各行各业中的应用越来越广泛,信息安全问题也日益凸显。为了保障…

使用CSS常见问题解答卡片

常见问题解答卡片 效果展示 CSS 知识点 CSS 选择器的使用background 渐变背景色运用CSS 综合知识运用 页面整体布局 <div class"container"><h1>经常问的问题</h1><!-- 这里只是展示一个项目 --><div class"tab"><in…

API 设计技巧:基础知识与实践的方法

在这篇深入探讨中&#xff0c;我们将从基础开始&#xff0c;逐步介绍 API 设计&#xff0c;并探讨定义卓越API的最佳实践。 作为一名开发者&#xff0c;你可能已经熟悉了许多这些概念&#xff0c;但我将提供详细解释&#xff0c;以加深你的理解。 API 设计&#xff1a;电子商…

云上战场:ToDesk云电脑、青椒云、顺网云全面对决

前言 记得端午放假期间&#xff0c;我已经在旅游的路上了&#xff0c;老板突然发短信&#xff0c;让我给他画个图&#xff0c;我手上的战斗机已经是十年前的老古董了(平常一直用的公司电脑&#xff0c;也没想过要换)&#xff0c;压根满足不了老板的任务要求&#xff0c;不得已&…

Linux_应用篇(20) 串口应用编程

本小节我们来学习 Linux 下串口应用编程&#xff0c;串口&#xff08;UART&#xff09;是一种非常常见的外设&#xff0c;串口在嵌入式开发领域当中一般作为一种调试手段&#xff0c;通过串口输出调试打印信息&#xff0c;或者通过串口发送指令给主机端进行处理&#xff1b;当然…

ES6(ECMAScript 6.0) 新特性

1 ES6 基本介绍 &#xff08;1&#xff09;ECMAScript 6.0(简称 ES6)是 JavaScript 语言的下一代标准&#xff0c; 2015 年 6 月发布。 &#xff08;2&#xff09;ES6 设计目标&#xff1a;达到 JavaScript 语言可以用来编写复杂的大型程序&#xff0c;成为企业级开发语言 &…

基于 Arm 虚拟硬件实现人脸特征提取模型的部署

基于 Arm 虚拟硬件实现人脸特征提取模型的部署 文章目录 1 实验背景1.1 Arm 虚拟硬件介绍1.2 文章简介 2 实验目标3 实验前准备3.1 订阅 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例3.2 克隆实验代码 4 实验步骤4.1 配置开发环境4.1.1 配置 CMSIS-Toolbox 环境4.1.2 配置 P…

Log4j2(CVE-2021-44228)远程代码执行漏洞

目录 介绍 log4j2介绍&#xff1a; JNDI介绍 LDAP介绍 RMI介绍 log4j2漏洞 漏洞复现 漏洞的&#xff08;触发&#xff09;流程 利用log4j2漏洞反弹shell 最近打算学习一下JAVA中几个经典的漏洞&#xff0c;这里还是参考别的师傅总结的好文章进行学习 JAVA的几个经典漏…

【价值主张画布】以产品思维,将自己打造成“爆款”

经营自己等于经营公司&#xff1a; 1.客户细分&#xff1a;我能帮助谁&#xff1f;谁是我们最重要的客户&#xff1f; 2. 客户关系&#xff1a;怎样和对方打交道&#xff1f;一次交付还是持续交付&#xff1f; 3.渠道通路&#xff1a;怎样宣传自己和服务&#xff1f; 4. 价值主…

请查收2024年小朋友的暑假计划日程表

2024年盛夏将至&#xff0c;孩子们的暑假即将拉开帷幕&#xff0c;是时候为他们精心策划一份丰富多彩的暑期日程表&#xff0c;让他们的假期充实而难忘&#xff01; 具体时间规划 07:30-08:00 清晨准备 独立完成穿衣、如厕和洗漱 打开窗户通风 测量体温&#xff0c;关注健康…

少儿编程启蒙新篇章:Scratch引领图形化编程的奇妙之旅

随着信息技术的飞速发展&#xff0c;编程教育已不再是专业领域的专属&#xff0c;而是逐渐走进千家万户&#xff0c;成为孩子们成长过程中不可或缺的一部分。特别是在少儿编程领域&#xff0c;图形化编程工具如Scratch的普及&#xff0c;为孩子们打开了编程启蒙的大门&#xff…

Vulnhub——AI: WEB: 2

渗透复现 &#xff08;1&#xff09;平台框架存在目录穿越漏洞&#xff0c;利用该漏洞读取敏感信息 &#xff08;2&#xff09;Ping功能点绕过&#xff0c;进行命令执行操作&#xff0c;反弹shell无果后&#xff0c;利用目录穿越漏洞遍历敏感API&#xff0c;读取到用户SSH登录…