无法通过Squid Proxy测试基于HTTP PUT的文件上传

时间:2012-05-13 01:20:29

标签: http upload proxy squid put

我可以使用Curl将文件上传到我的Apache Web服务器:

echo "[$(date)] file contents." | curl -T - http://WEB-SERVER/upload/sample.put 

但是,如果我在其间放置一个Squid代理服务器,那么我无法:

echo "[$(date)] file contents." | curl -x http://SQUID-PROXY:3128 -T - http://WEB-SERVER/upload/sample.put 

Curl报告以下错误:

注意:此错误响应采用HTML格式,但我删除了标签以便于阅读。

ERROR: The requested URL could not be retrieved

ERROR
The requested URL could not be retrieved

While trying to retrieve the URL:
http://WEB-SERVER/upload/sample.put

The following error was encountered:
Unsupported Request Method and Protocol

Squid does not support all request methods for all access protocols.
For example, you can not POST a Gopher request.
Your cache administrator is root. 

我的squid.conf似乎没有任何基于srcdst IP地址或protocol IP地址或者method不允许的ACL /规则HTTP HTTP POST ... ,因为我可以在同一个客户端和Web服务器之间做HTTP PUT,并且中间有相同的代理。

如果netcat失败,要查看实际发生的请求和响应流量,我在Curl和Squid之间放置了一个PUT http://WEB-SERVER/upload/sample.put HTTP/1.1 User-Agent: curl/7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 Host: WEB-SERVER Pragma: no-cache Accept: */* Proxy-Connection: Keep-Alive Transfer-Encoding: chunked Expect: 100-continue 进程,这就是我所看到的:< / p>

请求:

HTTP/1.0 501 Not Implemented
Server: squid/2.6.STABLE21
Date: Sun, 13 May 2012 02:11:39 GMT
Content-Type: text/html
Content-Length: 1078
Expires: Sun, 13 May 2012 02:11:39 GMT
X-Squid-Error: ERR_UNSUP_REQ 0
X-Cache: MISS from SQUID-PROXY-FQDN
X-Cache-Lookup: NONE from SQUID-PROXY-FQDN:3128
Via: 1.0 SQUID-PROXY-FQDN:3128 (squid/2.6.STABLE21)
Proxy-Connection: close

<SNIPPED the HTML error response already shown earlier above>

响应:

{{1}}

注意:出于可读性原因,我已将IP地址和服务器名称匿名化。

1 个答案:

答案 0 :(得分:2)

感谢Amos Jeffries在squid-users forum上回答这个问题。问题基本上是版本3.1之前的Squid没有实现HTTP 1.1,因此拒绝了分块传输编码。