正常的HTTP响应如下:
HTTP/1.0 200 OK
可以省略RFC调用 Reason-Phrase 的内容吗?类似的东西:
HTTP/1.0 200
RFC说:
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
Reason-Phrase = *<TEXT, excluding CR, LF>
我理解为:
所以以下内容是有效的:
HTTP-Version SP Status-Code SP CRLF
我是否正确了解RFC?
答案 0 :(得分:16)
看起来就是这样,如果你将*
读作'零个或多个字符',就像在正则表达式中一样。
如果你阅读RFC的Notational Convention,它的含义似乎略有不同:
*rule
The character "*" preceding an element indicates repetition. The full form is "<n>*<m>element" indicating at least <n> and at most <m> occurrences of element. Default values are 0 and infinity so that "*(element)" allows any number, including zero; "1*element" requires at least one; and "1*2element" allows one or two.
因此虽然它不是正则表达式,但其含义基本相同。在这种情况下,没有尾随数字的星号表示可以有“0或更多”“文本”。奇怪的说法,但似乎你是对的。
严格来说,空格是必需的,但我认为如果没有什么可以分开的话,可能会省略分隔符。但是,它可能会杀死具有严格实现的客户端,如果它们只是在空格上拆分此字符串并尝试读取描述应该在的元素。但话说回来,这些客户应该使用一些防御性程序来捕捉这种情况。 ;)
RFC 表示它可以是任何文本,只要它是人类可读的问题描述。此文本很重要,因为客户端可能无法理解状态代码的确切含义,因此可能需要向用户显示文本。所以即使你可以省略它,我个人也不会。
答案 1 :(得分:1)