【问题标题】:What byte[] concludes a HTTP server response?什么字节 [] 结束 HTTP 服务器响应?
【发布时间】:2009-05-15 13:24:02
【问题描述】:

您发送什么字节/字节来结束 HTTP 服务器响应?

【问题讨论】:

    标签: http response httpwebresponse


    【解决方案1】:

    没有这样的字节。任何一方都可以终止连接。

    有可选的 Content-Length 头,但它是一种提示,让客户端知道响应的大小。

    【讨论】:

    • 所以说可选的 Content-Length 标头被省略了。如果服务器连接关闭,客户端如何知道已收到完整的响应正文?
    • 客户不知道。如果服务器断开连接,则它完成了响应,或者发生了错误。根据响应的内容类型,客户端可能会对其进行分析。
    【解决方案2】:

    没有标记 -- 相反,在 HTTP 响应标头中有一个 Content-Length 字段描述响应正文的长度

    如果你有兴趣研究和学习 HTTP 协议,我会在 http://www.fiddler2.com/fiddler2/ 下载工具 Fiddler

    然后,您可以“在幕后”了解访问网页时发生的情况并查看请求和响应文本。

    【讨论】:

    • 所以说可选的 Content-Length 标头被省略了。如果服务器连接关闭,客户端如何知道已收到完整的响应正文?
    • 这由客户决定。据推测,如果服务器关闭了连接,它就完成了,但当然总是存在网络错误人为关闭连接的可能性。如果他们发送了 content-length 标头,您将能够分辨出区别。如果他们不这样做,你就无法知道,只需要尽你所能用他们发给你的东西
    【解决方案3】:

    来自RFC 2616(HTTP 1.1)

    HTTP/1.1 将序列 CR LF 定义为所有的行尾标记 除实体主体外的协议元素(参见附录 19.3 宽容的应用)。实体主体内的行尾标记 由其关联的媒体类型定义,如第 3.7 节所述。

    【讨论】:

    • 他要求的是响应结束,而不是行尾
    【解决方案4】:

    响应长度由关闭连接 (HTTP/1.0)、Content-Length 响应标头或使用 Chunked Encoding 确定。

    HTTPbis, Part 1, Section 4.4

    【讨论】:

      猜你喜欢
      • 2013-07-05
      • 1970-01-01
      • 2023-03-05
      • 2021-04-14
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多