设置请求标头:连接

Posted

技术标签:

【中文标题】设置请求标头:连接【英文标题】:Setting Request header: Connection 【发布时间】:2011-12-11 00:02:24 【问题描述】:

默认情况下,Connection 标头在浏览器中设置为 Keep-Alive,以便保持连接打开以接收来自浏览器的进一步请求。

当我将Connection 标头设置为close 时,可能有什么区别? 这会影响任何性能问题吗?

(一个补充:我从 xmlhttprequest 设置标题)

【问题讨论】:

你为什么要篡改这样的东西? 我收到来自服务器的空响应请求。我正在考虑这一点 也许statusCode: 204 no content 被设置了?这可能会干扰。 【参考方案1】:

当您使用“Connection: keep-alive”发出请求时,随后对服务器的请求将使用相同的 TCP 连接。这称为 HTTP 持久连接。这有助于减少服务器端的 CPU 负载并改善延迟/响应时间。

如果使用“Connection: close”发出请求,则表明一旦发出请求,服务器就需要关闭连接。因此对于每个请求,都会建立一个新的 TCP 连接。

默认情况下,HTTP 1.1 客户端/服务器使用 keep-alive,而 HTTP 1.0 客户端/服务器默认不支持 keep-alive。

【讨论】:

我认为您在请求中对Connection: close 的回答是错误的。根据HTTP/1.1 RFC,请求或响应标头字段中的Connection: close 表示在当前请求/响应完成后,连接不应被视为“持久”。【参考方案2】:

它会影响性能,因为最昂贵的资源会在两台机器之间创建一个套接字。所以客户端需要在每个请求中建立一个新的连接。

【讨论】:

假设可以从 xmlhttprequest 中更改它。 我需要做的是,这是否会创建一个到服务器的请求/响应流,并永远保持这个流打开,以便与服务器或其他东西进一步通信 @bzlm 是的,我正在从 xmlhttprequest 更改它 @neworld 那么什么时候应该将连接设置为关闭?你能给我举个例子吗? @this-abhi:我认为,您不需要自我紧密连接。这是不必要的。但是我你完全知道你生成了最后一个请求,你可以关闭。【参考方案3】:

本文以图形方式演示了当连接标头设置为关闭并保持活动时会发生什么。 它帮助我理解了它,我希望它也能帮助你。 The Benefits of Connection Keep Alive

【讨论】:

以上是关于设置请求标头:连接的主要内容,如果未能解决你的问题,请参考以下文章

更改请求标头 SOCKET.IO(无需断开连接和重新连接)

如何使用 okhttp 更改连接请求的标头

如何在将请求标头加载到 iframe 之前设置请求标头

Swift:未设置请求授权标头

底层连接被关闭:连接被意外关闭

为啥我们需要设置标头请求的内容类型