哪些浏览器会发送 expect: 100-continue 标头?

Posted

技术标签:

【中文标题】哪些浏览器会发送 expect: 100-continue 标头?【英文标题】:Which browsers send the expect: 100-continue header? 【发布时间】:2013-04-27 08:56:08 【问题描述】:

HTTP/1.1 规范允许客户端为大型请求负载 (8.2.3 Use of the 100 (Continue) Status - Hypertext Transfer Protocol -- HTTP/1.1 - RFC2616) 发送 Expect: 100-continue 标头。

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

如果这些标头未指示错误请求(例如,太大的Content-Length),则它会以100 Continue 状态行响应,允许客户端继续。此时客户端发送请求正文。

哪些浏览器实际上支持这一点,它们会在什么条件下发送期望标头?

【问题讨论】:

请解释为什么您想知道哪些浏览器实现了这种行为。如果你想测试东西,除了浏览器之外还有其他工具。 @CodeCaster 能够依靠它来预先验证大量上传会很好。但我大多只是好奇。 我也想知道。我们的负载测试软件 (MS Visual Studio) 发送“Expect:100-continue”标头,似乎导致我们的负载平衡器出现问题。当我禁用它使用该标头时,它工作正常。如果没有浏览器发送“Expect:100-continue”标头,那么我认为没有理由担心我们的负载均衡器与 100-continue 标头有关的问题,并且可以继续禁用我们的负载测试发送该标头。 【参考方案1】:

我知道 curl 会为 每个 发布请求执行此操作。前段时间刚刚跑过。

我还在"How can I stop cURL from using 100 Continue?" 中结合php 测试了它。

【讨论】:

桌面浏览器呢?有什么方法可以通过正常的 POST 请求支持 100 Continue 吗?如果是这样,在哪些浏览器中? 从技术上讲,任何 HTTP/1.1 客户端都可以使用它。在桌面世界中,例如 WebDAV 客户端、来自浏览器的 AJAX 请求、来自浏览器插件的请求。我知道您专门询问 WWW 浏览器,但我假设您是从服务器的角度询问,除非您不想支持 HTTP/1.1,否则您不需要询问 which 浏览器 - 它是一部分的规格。支持或者告诉客户端不支持HTTP/1.1版本:10.5.4 503 Service Unavailable. 更正: 我评论中的链接错误。这是一个我发现太晚的复制/粘贴错误。然而,我最初想要放置的链接也是错误的。如果您有一个带有期望的请求并且您不想在服务实现中处理它,则更正确的响应可能是10.4.18 417 Expectation Failed。我知道这仍然不能回答野外哪些 WWW 浏览器自己执行此类请求的问题。 我昨天浏览了 Chromium、WebKit 和 Firefox 的源代码,它们都有与Expect: 100 Continue 相关的处理,但似乎没有一个支持它。他们每个人都有提到这种缺乏支持的错误,但它没有记录在任何地方code.google.com/p/chromium/issues/…bugzilla.mozilla.org/show_bug.cgi?id=803673 也许我应该提到上下文是 ***.com/questions/16167935/… 特别是 igorw 在答案正文末尾的解决方案

以上是关于哪些浏览器会发送 expect: 100-continue 标头?的主要内容,如果未能解决你的问题,请参考以下文章

Expect实现ssh非交互登录

Redhat 7.2 上运行expect需要安装哪些包,谢谢各位

Shell编程——Expect免交互

关于HTTP请求返回417 “Expectation Failed”

小型自动化运维--expect入门知识

在 SSH 连接中使用 Expect 脚本发送密码命令不起作用