gpt4 book ai didi

C++ - 在连接关闭后发送 HTTP POST/GET

转载 作者:行者123 更新时间:2023-11-28 02:01:52 29 4
gpt4 key购买 nike

我一直在 StackOverFlow 上搜索解决方案但似乎找不到答案,我正在使用 WinSock2 登录网站并且服务器响应“连接:关闭”(即使我发送连接:保持-alive) 在标题中。返回 0 后尝试接收的任何消息。(0 = 正常关闭)

问题:

  1. 连接是否应该在 POST 请求后断开?

  2. 掉线后如何发送后续的GET/POST请求?

那么您是否必须像我下面的示例一样回收套接字并重新建立所有内容?

事件列表示例(我想我需要做的):

  1. WSA启动
  2. 查找地址
  3. 创建套接字
  4. 用地址连接套接字
  5. 发送发布请求

---连接在发布后关闭---

  1. 销毁套接字
  2. 创建套接字
  3. 用地址连接套接字
  4. 发送带有身份验证 Cookie 的获取请求

这就是我想象的事件链的样子,但我不是 100% 确定浏览器如何处理所有这些。但我从其他用户的经验和意见中学习,所以如果有人确切知道发生了什么,请告诉我。谢谢你的时间,

最佳答案

Is the connection suppose to drop after a POST request?

可以,是的。 HTTP 是一种无状态协议(protocol),即使请求保持连接,也无法保证连接在响应后保持连接。发送响应后是否关闭连接由服务器决定,如果客户端没有请求关闭连接。

How do you send subsequent GET/POST requests after it has dropped?

在发送新请求之前,您别无选择,只能重新连接到服务器以及涉及的所有内容(TCP 握手、SSL/TLS 握手等)。

如果你:

  • 发送 HTTP 1.0 请求,没有明确说明 Connection: keep-alive ,或者接收到 没有明确说明 Connection: keep-alive 的 HTTP 1.0 响应

  • 发送一个明确说明 Connection: close 的 HTTP 1.1 请求, 或收到明确声明 Connection: close 的 HTTP 1.1 响应

然后您必须在阅读响应后关闭您的连接端。

即使响应表明保持事件状态有效,连接仍可能超时并在您在同一连接上发送下一个请求之前关闭。

所以,任何时候你想发送一个新的请求,如果连接之前已经关闭,或者你在发送请求时遇到连接错误,关闭套接字,重新连接,然后重新发送请求。

So do you have to recycle the socket and re-establish everything again like my example below?

可能,是的。

I am not 100% sure how browsers handle all this.

完全如上所述。

这将在 RFC 2616 Section 8 "Connections" 中进一步讨论.

关于C++ - 在连接关闭后发送 HTTP POST/GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39109131/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com