Apabila CONNECT mengembalikan 200 dan TLS gagal dinyahkod serta-merta, periksa bait sempadan dalam penyambung sebelum menukar sijil atau sifer.

Nilai kebenaran yang dijana mungkin sudah berakhir dengan baris baharu. Menambah satu lagi hujung baris boleh menamatkan pengepala HTTP lebih awal, meninggalkan medan Host yang dimaksudkan atau teks biasa lain di belakang permintaan.

Permintaan HTTP/1.1 CONNECT minimum menggunakan CRLF antara baris dan baris kosong di hujung:

b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"

Letakkan mana-mana medan kebenaran sebelum baris kosong terakhir itu, tanpa pemisah baris terbenam. Dalam Python, "\n" mewakili baris baharu; rentetan mentah yang mengandungi garis miring terbalik dan huruf n tidak. Periksa bait apa yang dihasilkan pembantu pengekodan sebelum cuba membuangnya—pembantu lama boleh menambah pemisah baris.

Sebaik CONNECT berjaya, bait yang tinggal itu milik protokol terowong. Teks biasa yang tersesat boleh sampai kepada rakan yang menjangkakan TLS. Status berjaya tidak boleh membaiki bait yang sudah berbaris selepas permintaan cacat.

Periksa juga sempadan penerimaan. Baca respons proksi sepenuhnya sebelum menyerahkan soket kepada TLS, kendalikan bacaan separa dan kekalkan apa-apa yang dibaca melepasi pengepala. Satu bacaan soket tidak semestinya mengandungi satu mesej penuh.

Jika penghurai ini milik anda, bandingkan perwakilan bait yang disunting dengan tatabahasa wayar; kekalkan panjang dan sempadan baris kelihatan sambil menyembunyikan kata laluan. Untuk aplikasi yang hanya memerlukan sambungan proksi, penyambung yang diselenggara mengelakkan keperluan memiliki kod pembingkaian ini.

Artikel berkaitan