Я могу загрузить файл на свой веб-сервер Apache, используя Curl:
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
не кажется, имея ACL / правила, которые должны разрешаем на основе src
или dst
IP - адреса, или тому protocol
, или HTTP method
... как я могу сделать HTTP POST
очень хорошо между тем же клиентом и веб - сервером, с тем же прокси сидит между ними.
В случае сбоя 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
Отклик:
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-адреса и имена серверов для удобства чтения.
Примечание. Я также разместил этот вопрос в StackOverflow, но не получил никакого полезного ответа. Публикуйте его здесь, на случай, если люди в StackOverflow видят в этом вопрос, не связанный с программированием, и не проявляющий интереса.