2012-05-13 4 views
3

: 나는 사이에서 오징어 프록시 서버를 넣을 경우,테스트 할 수 없습니다 HTTP PUT 기반 파일 업로드를 오징어 프록시를 통해 내가 잘 컬를 사용하여 내 아파치 웹 서버에 파일을 업로드 할 수 있습니다

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

을하지만, 다음

참고 :

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

컬 다음과 같은 오류를보고 내가 할 수없는 나는이 오류 응답은 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 내가 할 수있는 한 src 또는 dst IP 주소를 기반으로하지 못하게하거나해야 모든 ACL/규칙, 또는 , 또는 HTTP method ... 을 가지고하지 않는 것 HTTP POST 동일한 클라이언트와 웹 서버 사이에 똑같은 프록시가있는 상태로 괜찮습니다. 실패한 HTTP PUT가지 경우 경우

실제로 발생 된 요청 및 응답 트래픽을보고, I는 컬 오징어 사이에 netcat 프로세스를 넣고,이 I 본 것을이다

요청 :

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 

응답 :

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> 

참고 : 가독성을 위해 IP 주소와 서버 이름을 익명으로 처리했습니다.

+0

문제는 Expect 헤더라고 생각합니다. 그것을 제거 할 수 있습니까? PUT 메서드는 Squid에서 지원되기 때문에. –

+0

나는 ('-H "Expect :"'옵션으로) 시도했지만 여전히 같은 응답을 보였다. – Harry

답변

2

squid-users forum에 대한 답변을 주신 Amos Jeffries에게 감사드립니다. 문제는 기본적으로 버전 3.1 이전의 Squid는 HTTP 1.1을 구현하지 않아 청크 분할 전송 인코딩을 거부합니다.