curl-library
RE: Ntlm proxy and Http 407 error
Date: Wed, 18 Feb 2015 17:39:00 +0100
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
Received on 2015-02-18