Ich kann eine Datei mit Curl auf meinen Apache-Webserver hochladen:
echo "[$(date)] file contents." | curl -T - http://WEB-SERVER/upload/sample.put
Wenn ich jedoch einen Squid-Proxy-Server dazwischenstelle, kann ich nicht:
echo "[$(date)] file contents." | curl -x http://SQUID-PROXY:3128 -T - http://WEB-SERVER/upload/sample.put
Curl meldet den folgenden Fehler:
Hinweis: Diese Fehlerantwort war im HTML-Format, aber ich habe die Tags zur besseren Lesbarkeit entfernt.
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.
Meine squid.conf
scheint keine ACL / Regel zu haben, die auf der Basis der src
oder der dst
IP-Adressen oder der protocol
oder der HTTP- Adresse nicht zulässig sein sollte method
... da ich mit HTTP POST
dem gleichen Client und dem Webserver eine Ordnung erreichen kann Stellvertreter, der dazwischen sitzt.
Für den HTTP PUT
Fall, dass der Fall fehlgeschlagen ist, habe ich einen netcat
Prozess zwischen Curl und Squid eingefügt, um zu sehen, wie der Anfrage- und Antwortverkehr tatsächlich abläuft.
Anfordern:
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
Antwort:
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>
Hinweis: Ich habe die IP-Adressen und Servernamen aus Gründen der Lesbarkeit durchweg anonymisiert.
Hinweis: Ich hatte diese Frage auch auf StackOverflow gepostet, erhielt aber keine hilfreiche Antwort. Postet es hier, falls die Leute bei StackOverflow dies als eine Frage der Programmierbarkeit sehen und nicht interessiert sind.