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" <[email protected]> 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 [[email protected]] on behalf of > Valerio Borsò [[email protected]] > *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" <[email protected]> ha scritto: > >> You also need to set the password with CURLOPT_PROXYUSERNAME and >> CURLOPT_PROXYPASSWORD. >> ------------------------------ >> *From:* curl-library [[email protected]] on behalf of >> Valerio Borsò [[email protected]] >> *Sent:* Wednesday, February 18, 2015 11:00 AM >> *To:* [email protected] >> *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
