5

我发现 apache xfire 在其 post header 中添加了一个 head 参数:

POST /testservice/services/TestService1.1 HTTP/1.1
SOAPAction: "testAPI" Content-Type: text/xml; charset=UTF-8
用户代理:Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0;XFire 客户端 +http://xfire.codehaus.org)
主机:192.168.10.111 :9082
预期:100-继续

这个Expect: 100-continue是否会使 xfire 客户端和它的端点服务器之间的往返调用有点浪费,因为它将使用更多的握手来让源服务器返回“愿意接受请求”?

这只是我的猜测。

万斯

4

1 回答 1

8

我知道这是个老问题,但由于我只是在研究这个主题,所以这是我的答案。你真的不需要使用“Expect: 100-continue”,它确实引入了额外的往返。此标头的目的是向服务器表明您希望在发布数据之前验证您的请求。这也意味着如果设置了它,您将承诺在发送表单或数据之前等待(在您自己的超时期限内 - 不是无限期!)等待服务器响应(100 或 HTTP 失败) 。尽管这似乎是额外的费用,但它旨在通过允许服务器让您知道不要发送数据(因为请求失败)来提高失败情况下的性能。

如果客户端设置标头,这意味着您无需等待来自服务器的 100 个代码,而是应在请求正文中发送您的数据。以下是相关标准:http ://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html (跳转到第 8.2.3 节)。

.NET 4 用户提示:可以使用静态属性“Expect100Continue”禁用此标头

给 libcurl 用户的提示:当禁用此标头不起作用时,旧版本 7.15 中存在错误;在较新的版本中修复(更多信息:http: //curl.haxx.se/mail/lib-2006-08/0061.html

于 2012-01-14T21:38:03.617 回答