Untuk handle libcurl yang sudah ada, pisahkan daftar header tujuan dan proxy secara eksplisit:

curl_easy_setopt(handle, CURLOPT_HEADEROPT, (long)CURLHEADER_SEPARATE);
curl_easy_setopt(handle, CURLOPT_PROXYHEADER, proxy_headers);
curl_easy_setopt(handle, CURLOPT_HTTPHEADER, origin_headers);

Jaga handle yang dikonfigurasi dan daftar yang valid tetap hidup selama transfer. CURLHEADER_SEPARATE membedakan header yang digunakan pada CONNECT dari header yang digunakan untuk permintaan tujuan. Contoh kebijakan terpadu yang lebih lama dapat menempatkan daftar biasa di kedua pertukaran.

Jalur permintaanArti daftar terpisah
HTTPS di dalam terowongan CONNECT biasaPertukaran proxy datang lebih dulu; header HTTP tujuan menyusul di dalam TLS tujuan.
Penerusan HTTP biasaProxy dapat membaca header tujuan, dan libcurl dapat menggunakan kedua daftar yang berlaku pada satu permintaan yang diteruskan.

Penanda perutean khusus proxy berada pada pertukaran proxy. Dengan penerusan teks biasa, bidang kustom arbitrer dapat mencapai origin kecuali pengaturan penerusan menanganinya; nama opsi bukan jaminan kerahasiaan.

Gunakan opsi kredensial yang didukung untuk autentikasi. Untuk metadata yang ditentukan operator, tentukan hop mana yang mengonsumsinya dan apakah metadata itu boleh diteruskan alih-alih menaruh kata sandi di bidang generik.

Saat penanda hilang atau tampak bocor, identifikasi permintaan sebenarnya yang memuatnya. Callback header yang menampilkan beberapa pertukaran dapat membuat daftar yang terpisah dengan benar tampak tercampur.

Artikel terkait