لم يعد القول القديم بأن Python يرسل دائمًا HTTP/1.0 من أجل CONNECT قاعدة عامة آمنة. فقد غيّر Python 3.12 إنشاء النفق في http.client إلى HTTP/1.1 وأضاف توليد ترويسة Host تلقائيًا عند عدم توفيرها.

ينتمي هذا التغيير إلى التطبيق الموثّق للمكتبة القياسية. يمكن لمكتبة HTTP أعلى مستوى أن تتجاوز سلوك النفق أو تغلّفه، لذا سجّل إصدارها إلى جانب إصدار Python.

إذا رفض الوسيط النفق، فافحص تبادل CONNECT الذي أنتجه ذلك العميل فعليًا. إن تغيير إصدار HTTP في طلب الوجهة أو إضافة ترويسة Host إلى طلب الموقع لا يغيّر بالضرورة طلب النفق السابق.

وبالمثل، فإن تعديل حقول خاصة في مثال قديم لمهايئ Requests قد يقفل التطبيق على واجهة برمجة داخلية قديمة. فضّل مزيجًا متوافقًا ومدعومًا من العميل وبيئة التشغيل وتكاملًا موثّقًا مع الوسيط.

أبقِ المحادثتين منفصلتين في التقرير: طلب HTTP المستخدم لفتح النفق، ثم البروتوكول الذي جرى التفاوض عليه مع الوجهة داخله. يمكن أن يستخدما إصدارات مختلفة وأن يفشلا في مراحل مختلفة.

مقالات ذات صلة