我们是否需要xfire请求标头中的“Expect:100-continue”标头?

时间:2011-09-26 06:29:08

标签: performance web-services http-headers xfire

我发现apache xfire在其帖子标题中添加了一个head参数:

  

POST /testservice/services/TestService1.1 HTTP / 1.1
  SOAPAction:“testAPI”Content-Type:text / xml;字符集= UTF-8
  User-Agent:Mozilla / 4.0(兼容; MSIE 6.0; Windows NT 5.0; XFire Client + http://xfire.codehaus.org)
  主持人:192.168.10.111:9082
  期望:100-continue

这个 Expect:100-continue 是否会使xfire客户端与其端点服务器之间的往返调用有点浪费,因为它将使用一次握手让原始服务器返回“愿意接受请求“?

这只是我的猜测。

万斯

1 个答案:

答案 0 :(得分:7)

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

如果客户端设置的标头,则表示您没有等待来自服务器的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