curl-library
RE: Ntlm proxy and Http 407 error
Date: Wed, 18 Feb 2015 18:00:22 +0100
Fine, i understand now but still i cant have pass or username to provide.
Using command line option i could contact google in either way, SSL or not,
giving The -U optional, wich is The similari approach using lib?
Il 18/feb/2015 17:56 "Joe Mason" <jmason_at_blackberry.com> ha scritto:
> With HTTP, you got a 407 response to the HEAD request, and then it said
> "No error" because it got a valid HTTP response. But it's not the HTTP
> response you actually wanted. You need to set the password so that curl
> will send the authentication when it gets a 407 response.
>
> With HTTPS, you got a 407 response and then it said there was an error
> completing the CONNECT step. The difference is that HTTPS needs a CONNECT
> to get through the proxy, then it sets up an SSL tunnel, then it sends
> another HTTP request over that tunnel, so it printed an error message
> because it had more steps to complete that it couldn't get to.
> ------------------------------
> *From:* curl-library [curl-library-bounces_at_cool.haxx.se] on behalf of
> Valerio Borsò [vborso_at_gmail.com]
> *Sent:* Wednesday, February 18, 2015 11:39 AM
> *To:* libcurl development
> *Subject:* RE: Ntlm proxy and Http 407 error
>
> So why using http all is OK? I'using ntlm for auth and it takes
> credebtial from windows login
> Il 18/feb/2015 17:26 "Joe Mason" <jmason_at_blackberry.com> ha scritto:
>
>> You also need to set the password with CURLOPT_PROXYUSERNAME and
>> CURLOPT_PROXYPASSWORD.
>> ------------------------------
>> *From:* curl-library [curl-library-bounces_at_cool.haxx.se] on behalf of
>> Valerio Borsò [vborso_at_gmail.com]
>> *Sent:* Wednesday, February 18, 2015 11:00 AM
>> *To:* curl-library_at_cool.haxx.se
>> *Subject:* Ntlm proxy and Http 407 error
>>
>> Hi All!!
>>
>> I'm developing a small application. For testing purpouse i'm tryng to
>> "ping" google using libcurl while behind an ntlm proxy. This is my c++ code:
>>
>>
>> CURLcode testConnection(void)
>>
>> {
>>
>> CURL *curl;
>>
>> CURLcode res = CURLE_OK;
>>
>> res = curl_global_init(CURL_GLOBAL_ALL);
>>
>> curl = curl_easy_init();
>>
>> if (curl)
>>
>> {
>>
>> cout << "Url: " << curl_easy_strerror(curl_easy_setopt(curl,
>> CURLOPT_URL, "http://www.google.com")) << "\n";
>>
>> cout << "T-out: " << curl_easy_strerror(curl_easy_setopt(curl,
>> CURLOPT_CONNECTTIMEOUT, 3)) << "\n";
>>
>> cout << "No_body: " << curl_easy_strerror(curl_easy_setopt(curl,
>> CURLOPT_NOBODY, true)) << "\n";
>>
>> cout << "Proxy Url: " <<
>> curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_PROXY, "
>> proxyrm.wind.root.it")) << "\n";
>>
>> cout << "Proxy Port: " <<
>> curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_PROXYPORT, 8080)) << "\n";
>>
>> cout << "Ntml: " << curl_easy_strerror(curl_easy_setopt(curl,
>> CURLOPT_HTTPAUTH, CURLAUTH_NTLM)) << "\n";
>>
>> cout << "Verbose: " << curl_easy_strerror(curl_easy_setopt(curl,
>> CURLOPT_VERBOSE, true)) << "\n";
>>
>>
>> res = curl_easy_perform(curl);
>>
>> curl_easy_cleanup(curl);
>>
>> }
>>
>> else
>>
>> res = CURLE_FAILED_INIT;
>>
>> curl_global_cleanup();
>>
>> return res;
>>
>> }
>>
>>
>> All this went good, since the verbose output is the following.
>>
>>
>> Url: No error
>>
>> T-out: No error
>>
>> No_body: No error
>>
>> Proxy Url: No error
>>
>> Proxy Port: No error
>>
>> Ntml: No error
>>
>> Verbose: No error
>>
>> * About to connect() to proxy proxyrm.wind.root.it port 8080 (#0)
>>
>> * Trying 10.8.54.115...
>>
>> * Connected to proxyrm.wind.root.it (10.8.54.115) port 8080 (#0)
>>
>> > HEAD http://www.google.com HTTP/1.1
>>
>> Host: www.google.com
>>
>> Accept: */*
>>
>> Proxy-Connection: Keep-Alive
>>
>>
>> < HTTP/1.1 407 Proxy Authentication Required
>>
>> < Proxy-Authenticate: NTLM
>>
>> < Proxy-Authenticate: BASIC realm="windroot"
>>
>> < Cache-Control: no-cache
>>
>> < Pragma: no-cache
>>
>> < Content-Type: text/html; charset=utf-8
>>
>> * HTTP/1.1 proxy connection set close!
>>
>> < Proxy-Connection: close
>>
>> < Set-Cookie: BCSI-CS-602d36a7505d346e=2; Path=/
>>
>> < Connection: close
>>
>> < Content-Length: 989
>>
>> <
>>
>> * Closing connection 0
>>
>>
>> Curl Final: No error
>>
>>
>>
>> But, if i try to ping https://google.com using this line
>>
>> cout << "Url: " << curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_URL,
>> "http://www.google.com")) << "\n";
>>
>>
>> The result become this
>>
>>
>> Url: No error
>>
>> T-out: No error
>>
>> No_body: No error
>>
>> Proxy Url: No error
>>
>> Proxy Port: No error
>>
>> Ntml: No error
>>
>> Ntml: No error
>>
>> Ntml: No error
>>
>> Verbose: No error
>>
>> * About to connect() to proxy proxyrm.wind.root.it port 8080 (#0
>>
>> * Trying 10.8.54.115...
>>
>> * Connected to proxyrm.wind.root.it (10.8.54.115) port 8080 (#0)
>>
>> * Establish HTTP proxy tunnel to www.google.com:443
>>
>> > CONNECT www.google.com:443 HTTP/1.1
>>
>> Host: www.google.com:443
>>
>> Proxy-Connection: Keep-Alive
>>
>>
>> < HTTP/1.1 407 Proxy Authentication Required
>>
>> < Proxy-Authenticate: NTLM
>>
>> < Proxy-Authenticate: BASIC realm="windroot"
>>
>> < Cache-Control: no-cache
>>
>> < Pragma: no-cache
>>
>> < Content-Type: text/html; charset=utf-8
>>
>> < Proxy-Connection: close
>>
>> < Set-Cookie: BCSI-CS-602d36a7505d346e=2; Path=/
>>
>> < Connection: close
>>
>> < Content-Length: 1135
>>
>> <
>>
>> * Ignore 1135 bytes of response-body
>>
>> * Received HTTP code 407 from proxy after CONNECT
>>
>> * Connection #0 to host proxyrm.wind.root.it left intact
>>
>>
>> Curl Final: Failure when receiving data from the peer
>>
>>
>> Using curl in command line allow me to ping https (i have to specify
>> the -k argument) but i don't know if this is really relevant.
>>
>> Someone can help me to figure out what's happening? And how to avoid that?
>>
>> -------------------------------------------------------------------
>> List admin: http://cool.haxx.se/list/listinfo/curl-library
>> Etiquette: http://curl.haxx.se/mail/etiquette.html
>>
>
> -------------------------------------------------------------------
> List admin: http://cool.haxx.se/list/listinfo/curl-library
> Etiquette: http://curl.haxx.se/mail/etiquette.html
>
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html
Received on 2015-02-18