Port proxy dan port tujuan di cURL
Pertahankan port layanan HTTPS di URL tujuan dan port perantara di URL proxy, tanpa menimpanya melalui CURLOPT_PORT.
Layanan HTTPS pada port 8443 dapat dijangkau melalui proxy HTTP pada port 8080. Angka-angka itu menggambarkan koneksi yang berbeda:
$handle = curl_init('https://api.example:8443/status');
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example:8080');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
Aplikasi tetap memegang kendali atas eksekusi, penanganan kesalahan, dan siklus hidup handle. Potongan kode menyatukan masukan perutean tanpa mengubah verifikasi sertifikat.
cURL lebih dulu terhubung ke proxy.example:8080. Untuk tujuan HTTPS ini, permintaan terowongan menyebut api.example:8443, dan identitas TLS tetap api.example.
CURLOPT_PORT adalah penimpaan port tujuan, bukan port proxy. Menyetelnya ke 443 setiap kali URL diawali https dapat menimpa layanan yang sengaja dihosting di 8443. libcurl menyarankan memilih port di URL daripada memakai opsi itu.
Saat memakai ulang handle, perhitungkan juga penimpaan port eksplisit sebelumnya. URL baru tidak membuat opsi yang tertinggal dan saling bertentangan lebih mudah ditafsirkan.
Perantara harus mengizinkan CONNECT ke port tujuan yang dipilih. Penolakan untuk 8443 bukan alasan untuk memindahkan listener proxy atau menonaktifkan validasi TLS.