Portul proxy și portul destinație în cURL
Păstrați portul unui serviciu HTTPS în URL-ul destinației și portul intermediarului în URL-ul proxy, fără a le suprascrie prin CURLOPT_PORT.
Un serviciu HTTPS pe portul 8443 este accesibil printr-un proxy HTTP pe portul 8080. Aceste numere descriu conexiuni diferite:
$handle = curl_init('https://api.example:8443/status');
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example:8080');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
Aplicația rămâne responsabilă pentru execuție, tratarea erorilor și ciclul de viață al handle-ului. Fragmentul ține împreună intrările de rutare fără a schimba verificarea certificatului.
cURL se conectează mai întâi la proxy.example:8080. Pentru această destinație HTTPS, cererea de tunel numește api.example:8443, iar identitatea TLS rămâne api.example.
CURLOPT_PORT este o suprascriere a portului destinației, nu a portului proxy-ului. Setarea lui la 443 ori de câte ori un URL începe cu https poate suprascrie un serviciu găzduit intenționat pe 8443. libcurl recomandă alegerea portului în URL în loc de utilizarea acelei opțiuni.
Când refolosiți un handle, țineți cont și de orice suprascriere explicită anterioară a portului. Un URL nou nu face opțiunile păstrate contradictorii mai ușor de interpretat.
Intermediarul trebuie să permită CONNECT către portul destinației ales. Un refuz pentru 8443 nu este motiv să mutați listenerul proxy sau să dezactivați validarea TLS.