Hello,

I can upload a file to my Apache web server using Curl just fine:

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

However, if I put a Squid proxy server in between, then I am not able to:

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

Curl reports the following error:

*Note: The following error response was in HTML format, but I've removed
the tags for ease of reading.*

    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.

My `squid.conf` doesn't seem to be having any ACL/rule that should disallow
based on the `src` or `dst` IP addresses, or the `protocol`, or the HTTP
`method`... **as I can do an `HTTP POST` just fine between the same client
and the web server, with the same proxy sitting in between.**

In case of the failing `HTTP PUT` case, to see the request and response
traffic that was actually occurring, I placed a `netcat` process in between
Curl and Squid, and this is what I saw:

**Request:**

    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

**Response:**

    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>

*Note: I have anonymized the IP addresses and server names throughout for
readability reasons.*

*Note: I had posted this question on [StackOverflow also][1], but got no
helpful response. Posting it here, in case people on StackOverflow are
seeing this as a non-programming question and not taking interest.*

Regards,
/HS

  [1]:
http://stackoverflow.com/questions/10568655/unable-to-test-http-put-based-file-upload-via-squid-proxy

Reply via email to