POST 为什么会发送两次请求?

简介: POST 为什么会发送两次请求?

在发送 POST 请求时,如果该请求需要携带自定义的请求头部信息,也会触发预检请求。这是因为简单请求(无自定义请求头)不会触发预检请求,只有复杂请求(有自定义请求头)才需要先进行预检请求,以确保服务器允许该请求携带自定义的请求头部信息。

因此,当发送带有自定义请求头的 POST 请求时,浏览器会先发送一个 OPTIONS 请求进行预检,如果服务器允许该请求,则浏览器会再次发送实际的 POST 请求。这就是为什么有时候会看到 POST 请求被发送了两次的情况。

另外,可能会发送两次请求的原因是浏览器缓存问题。有些浏览器会在发送 POST 请求时先发送一次 OPTIONS 预检请求,如果之前已经进行过预检请求并得到服务器的允许,浏览器会将预检结果缓存起来,下次再发送 POST 请求时就不会再发送预检请求了。但如果缓存过期或被清除,浏览器会重新发送预检请求。因此,有时候我们看到的两次请求其实是一次实际请求和一次预检请求。

关于 POST 请求发送两次的问题,可能是因为浏览器在发送 POST 请求时,会先发送一个 OPTIONS 类型的预检请求,确认服务器是否支持实际的 POST 请求。如果服务器返回了允许跨域请求的响应头部信息,浏览器才会继续发送 POST 请求。因此,我们在代码中需要针对预检请求和实际请求做好相应的处理。


相关文章
|
6月前
post 的接口请求
post 的接口请求
34 0
|
2月前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
5月前
|
人工智能 前端开发 安全
post为什么会发送两次请求?
post为什么会发送两次请求?
|
4月前
|
前端开发 开发者
发送HTTP请求需要知道些什么
发送HTTP请求需要知道些什么
23 0
request 获取请求消息体
request 获取请求消息体
|
5月前
|
移动开发 网络协议 安全
C/C++ 发送与接收HTTP/S请求
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议。它是一种无状态的、应用层的协议,用于在计算机之间传输超文本文档,通常在 Web 浏览器和 Web 服务器之间进行数据通信。HTTP 是由互联网工程任务组(IETF)定义的,它是基于客户端-服务器模型的协议,其中客户端向服务器发送请求,服务器以相应的数据作为响应。HTTP 协议是建立在 TCP/IP 协议之上的,通常使用默认的端口号80。
107 0
C/C++ 发送与接收HTTP/S请求
|
5月前
Axios 权限请求 一次只能发送一个请求
Axios 权限请求 一次只能发送一个请求
|
9月前
|
前端开发 开发者
发送 HTTP 请求
HTTP 这玩意要了解了解
72 0
|
前端开发 开发者
ajax 第二例:发送 POST 请求| 学习笔记
快速学习 ajax 第二例:发送 POST 请求。
413 0
ajax 第二例:发送 POST 请求| 学习笔记
|
JSON 数据格式
post发送json数据
post发送json数据
89 0