编辑:后来似乎有些浏览器将“响应标头”一词与“响应消息(没有响应主体)”混淆。这就是问题出错的地方。浏览器只是不正确。与此同时,我回答了自己的问题。
在Firefox中,您可以通过“Firefox开发者工具”>检查“原始标题”。 “网络”。
原始响应标头的示例:
Date: Thu, 23 Nov 2017 12:43:21 GMT
Server: Apache/2.4.17 (Unix) OpenSSL/1.0.1e-fips PHP/5.6.16
Connection: Keep-Alive
Keep-Alive: timeout=1, max=100
Cache-Control: max-age=9, public
Vary: User-Agent
但我想念(例如):“HTTP / 1.1 304 Not Modified”。 Firefox显示其他地方“304 Not Modified”,但不显示RAW。
所以他们让我觉得我有原始形式的响应头,但实际上它只是响应头的一部分,不包括状态代码。这对人们来说真的很困惑。 在我看来,在那个地方添加“状态代码”会更有意义。现在它不合逻辑。
这是一个错误还是我必须看到它?
答案 0 :(得分:-1)
同时我可以回答我自己的问题。
此时,某些浏览器使用的术语错误。他们混淆了“响应标题”和“响应消息(没有消息正文)”。所以这就是为什么我在问这个问题时感到困惑,这就是问题所在。
请参阅:https://tools.ietf.org/html/rfc7230#page-8(2.1。客户端/服务器消息传递)
服务器通过发送一个或多个HTTP来响应客户端的请求 响应消息,每个消息都以包含的状态行开头 协议版本,成功或错误代码以及文本原因 短语(第3.1.2节),可能后跟包含的标题字段 服务器信息,资源元数据和表示元数据 (第3.2节),一个空行表示标题的结尾 section,最后是一个包含有效负载主体的消息体(如果 任何,第3.3节。
所以换句话说。
回应消息:
Status line (ending with CRLF, so 2 extra Bytes)
Header field 1, in case of (ending with CRLF, so 2 extra Bytes)
Header field 2, in case of (ending with CRLF, so 2 extra Bytes)
Header field 3, et cetera (ending with CRLF, so 2 extra Bytes)
Empty line to indicate the end of the header section (CRLF, so 2 extra Bytes)
Message body / Response body, if any
响应标题/响应标题:
Header field 1 in case of (ending with CRLF, so 2 extra Bytes)
Header field 2 in case of (ending with CRLF, so 2 extra Bytes)
Header field 3 et cetera (ending with CRLF, so 2 extra Bytes)
因此,正式的状态行不是“响应标题”的一部分,而只是“响应消息”的一部分。
Firefox 例如在“Firefox开发者工具”>中显示“响应标题”的大小。 “网络”>点击行>标题选项卡。
此大小还包括i.a的大小。状态线。原始响应头的大小必须与此大小相对应,但目前情况并非如此。所以或者他们需要更改大小,或者他们必须在(原始)响应头中额外包含“status-line”+“empty line”,并且他们必须给它另一个名称(例如:响应消息 - 消息体)。
Chrome 也出错了。例如,请参阅:https://developers.google.com/web/tools/chrome-devtools/network-performance/reference#requests
他们在那里说:
尺寸。响应标头加上响应主体的总大小,由服务器提供。
但它们实际上意味着不同的东西(也根据实践中的尺寸值)。他们实际上是这个意思:
尺寸。响应消息的组合大小,没有消息正文(而不是响应标头)加上响应主体,由服务器提供。
实际上换句话说:
尺寸。响应消息的组合大小,由服务器提供。
这就是我的原始问题来自哪里。显然这对于浏览器来说是一个困难的主题,因为我在2个浏览器中进行了测试,并且两者都在犯错误。
因此,如果人们认为状态行是响应标题的一部分,那就不奇怪了。