HTTP_EXPECT标题究竟是什么?
我注意到它出现在一些但不是所有的日志中,我很好奇这是什么意思?
答案 0 :(得分:4)
我之前从未听说过这个标题,但是一些研究很有启发性。
您可以阅读spec for HTTP_EXPECT right here。但是,规范语言可能有点干和技术性。更宽松的解释如下:
客户端可以使用大型主体发送HTTP请求。如果事实证明服务器由于某种原因(例如没有用户登录或类似)最终拒绝请求,这将是带宽的大量浪费。输入HTTP_EXPECT标头。这个头实质上让客户端对服务器提出了特殊要求; “我的客户期待你会预先批准这条消息,否则......我甚至都不会费心去做大事了。”在服务器端,服务器通常可以选择以两种方式之一进行响应:
100
(请继续!)回复,或417
(不,期望失败)回复。这必须由服务器完成之前昂贵的大型请求主体跟在流管道之后,所以100
在你的最终响应之前是一种中间响应(可能是{{ 1}}),200
是一个完全关闭管道的最终响应,因此客户端永远不会最终流式传输数据。
现在,理论上,期望标题是可扩展的,因此它可能用于其他目的。客户端可以发送417
之外的其他内容。但上述用例似乎是此标题的主要目的(如果不仅仅是)。 See here for more info on the 100
response
特别注意JS开发人员,我认为值得指出Node有100-continue support,但截至今天,还不支持other Expect headers。