如何让Wget处理HTTP 100-Continue响应?

时间:2008-09-24 12:01:26

标签: http wget

我正在尝试使用Wget将HTML(包含在文件中)发布到网址,如下所示:

wget -O- --debug
     --header=Content-Type:text/html
     --post-file=index.html
     http://localhost/www/encoder.ashx

发布HTML的URL是使用ASP.NET实现的Web应用程序端点。服务器回复100 (Continue)响应,Wget只是停留在其轨道上,而不是继续应该接下来的真实响应。

Wget可以以某种方式被告知要进行100(继续)响应,还是这个工具的一些众所周知的限制?

注意:

  • 我注意到Wget从未发送过 那个Expect: 100-Continue标题 从技术上讲,服务器不应该 发出100(继续)回复。

    更新:根据§8.2.3看起来可行 RFC 2616 (Hypertext Transfer Protocol -- HTTP/1.1)

      

    原始服务器不应该发送100(继续)响应   请求消息不包含Expect请求标头   具有“100-continue”期望的字段,并且不得发送   如果此类请求来自HTTP / 1.0,则为100(继续)响应   (或更早)客户。这条规则有一个例外:for   兼容RFC 2068,服务器可以发送100(继续)   响应HTTP / 1.1 PUT或POST请求的状态   不包括带有“100-”的Expect请求标头字段   继续“期待。这个例外,其目的是   最小化与a相关的任何客户端处理延迟   未声明等待100(继续)状态,仅适用于   HTTP / 1.1请求,而不是任何其他HTTP请求   版本值。

  • cURL对此类交易没有任何问题。 它会发送Expect: 100-Continue标头 继续100(继续)回复 真实的。

有关更多信息,请参阅上面显示的调用的事务的完整调试跟踪:

Setting --post-file (postfile) to index.html
Setting --header (header) to Content-Type:text/html
DEBUG output created by Wget 1.10 on Windows.

--13:29:17--  http://localhost/www/encoder.ashx
           => `-'
Resolving localhost... seconds 0.00, 127.0.0.1
Caching localhost => 127.0.0.1
Connecting to localhost|127.0.0.1|:80... seconds 0.00, connected.
Created socket 296.
Releasing 0x01621a10 (new refcount 1).

---request begin---
POST /www/encoder.ashx HTTP/1.0
User-Agent: Wget/1.10
Accept: */*
Host: localhost
Connection: Keep-Alive
Content-Type: text/html
Content-Length: 30984

---request end---
[writing POST file index.html ... done]
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 100 Continue
Server: ASP.NET Development Server/9.0.0.0
Date: Wed, 24 Sep 2008 11:29:17 GMT
Content-Length: 0

---response end---
100 Continue
Closed fd 296
13:29:17 ERROR 100: Continue.

1 个答案:

答案 0 :(得分:1)

我查看了wget for Windows的源代码,据我所知,当wget无法正确解析响应时,调试输出来自通用错误条件。看起来这只是wget的限制,所以你可能不得不使用curl或其他方法来避免遇到这个问题。