Pengepala proksi PHP cURL: CONNECT berbanding respons destinasi
Asingkan pengepala CONNECT, pengesahan, ubah hala dan respons akhir apabila pemindahan PHP cURL menggunakan proksi.
Kumpulkan baris pengepala secara berasingan daripada badan respons. Pemindahan melalui proksi boleh menyampaikan pengepala CONNECT, pengesahan, ubah hala dan respons destinasi dalam satu operasi:
$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
function ($handle, $line) use (&$headerLines) {
$headerLines[] = $line;
return strlen($line);
}
);
Callback ini mengekalkan urutan baris mentah dan mengembalikan bilangan bait yang diterima. Ia menerima baris lengkap; tetapi belum mengumpulkannya menjadi respons atau memilih pengepala laman web akhir.
Tafsirkan urutan sebagai blok
Baris status HTTP memulakan blok respons, dan baris kosong menamatkan pengepalanya. Kekalkan sempadan itu sebelum memilih respons destinasi akhir. Cubaan pengesahan pertengahan dan ubah hala masing-masing boleh menambah blok.
Trailer mungkin tiba kemudian melalui callback. Simpan keadaan penghurai yang cukup untuk membezakannya daripada pengepala awal, bukannya melampirkan setiap medan kemudian pada respons pertama.
Simpan atau tekan bukti terowong
Baca CURLINFO_HTTP_CONNECTCODE secara berasingan untuk status CONNECT terowong HTTPS. Terowong yang diterima tidak membuktikan respons laman web yang berjaya.
Jika pengepala CONNECT tidak diperlukan oleh pengumpul, CURLOPT_SUPPRESS_CONNECT_HEADERS mengawal penyampaiannya kepada output pengepala yang dikonfigurasikan dan laluan callback. Semak sokongan dalam libcurl dan binaan PHP yang dipautkan. Penekanan memudahkan pengumpulan tetapi membuang bukti terowong peringkat pengepala yang boleh membantu diagnosis.
Jangan pulihkan badan menggunakan offset tetap atau dengan mencari tag HTML. Saiz pengepala berbeza-beza, respons pertengahan berbeza, dan badan mungkin binari atau kosong. Laporan pepijat lama khusus keluaran tidak mewajarkan offset yang diagak.
Asingkan pengendalian badan, dan simpan ralat pemindahan bersama peringkat respons yang diperhatikan jika pengumpulan atau penghuraian gagal. Itu membezakan callback terputus, data aplikasi cacat dan pertukaran proksi ditolak.