2013-05-03 48 views
23

HTTP/1.1规范允许客户端发送Expect: 100-continue标头用于大型请求有效载荷(8.2.3 Use of the 100 (Continue) Status - Hypertext Transfer Protocol -- HTTP/1.1 - RFC2616)。哪些浏览器发送期望值:100-continue头?

这会在标头发送后暂停请求,并允许服务器根据这些标头拒绝它。

如果这些标头没有显示错误的请求(例如太大的Content-Length),那么它会回应100 Continue状态行,允许客户端继续。此时客户端发送请求主体。

哪些浏览器实际上支持这一点,并且在哪些条件下会发送期望头?

+0

请解释您为什么想知道浏览器实现此行为的原因。如果你想测试的东西,除了浏览器还有其他工具。 – CodeCaster 2013-05-03 11:49:03

+5

@CodeCaster能够依靠它来预先验证巨大的上传会很好。但我大多只是好奇而已。 – igorw 2013-05-13 01:02:36

+0

我也想知道。我们的负载测试软件(MS Visual Studio)发送“Expect:100-continue”标题,似乎会​​导致我们的负载平衡器出现问题。当我禁用它使用该标题时,它工作正常。如果没有浏览器发送“Expect:100-continue”标题,那么我没有理由担心我们的负载平衡器与100-continue标题有关的问题,并且可以继续禁用发送该标题的负载测试。 – Makotosan 2013-11-07 18:02:14

回答

4

我知道卷曲是为发布请求。刚刚刚过去了。

我还在"How can I stop cURL from using 100 Continue?"中与PHP一起测试过。

+0

桌面浏览器怎么样?有没有办法支持100继续正常的POST请求?如果是这样,在哪些浏览器? – 2013-05-03 03:56:37

+1

技术上来说,任何HTTP/1.1客户端都可以使用它。在桌面世界中,例如WebDAV客户端,来自浏览器内的AJAX请求,来自浏览器插件的请求。我知道你特别要求WWW浏览器,但我会假设你从服务器的角度来问,除非你不想支持HTTP/1.1,你不需要问*哪个浏览器 - 这是规范的一部分。支持它或告诉客户端不支持HTTP/1.1版本:[10.5.4 503服务不可用](http://tools.ietf.org/html/rfc2616#section-10.1.2)。 – hakre 2013-05-03 09:55:23

+0

***更正:***我评论中的链接是错误的。这是我注意到太晚的复制/粘贴错误。我原本想要放置的链接也是错误的。如果你有一个期望的请求而你不想处理的话,更正确的回应可能是[10.4.18 417 Expectation Failed](http://tools.ietf.org/html/rfc2616#section-10.4.18)它在你的服务实现上。我知道这还没有回答WWW浏览器在野外自己做这些请求的问题。 – hakre 2013-05-03 12:32:25