Η παλιά δήλωση ότι η Python στέλνει πάντα HTTP/1.0 για CONNECT δεν είναι πλέον ασφαλής γενικός κανόνας. Η Python 3.12 άλλαξε τη σήραγγα του http.client σε HTTP/1.1 και πρόσθεσε αυτόματη δημιουργία κεφαλίδας Host όταν δεν παρέχεται.

Αυτή η αλλαγή ανήκει στην τεκμηριωμένη υλοποίηση της βασικής βιβλιοθήκης. Μια βιβλιοθήκη HTTP υψηλότερου επιπέδου μπορεί να παρακάμψει ή να περιτυλίξει τη συμπεριφορά της σήραγγας, οπότε καταγράψτε την έκδοσή της καθώς και την έκδοση της Python.

Αν ο διαμεσολαβητής απορρίψει τη σήραγγα, εξετάστε την ανταλλαγή CONNECT που παρήγαγε πραγματικά αυτός ο πελάτης. Η αλλαγή της έκδοσης HTTP του αιτήματος προορισμού ή η προσθήκη κεφαλίδας Host στο αίτημα του ιστότοπου δεν αλλάζει απαραίτητα το προηγούμενο αίτημα σήραγγας.

Ομοίως, η επεξεργασία ιδιωτικών πεδίων σε ένα παλιό παράδειγμα προσαρμογέα Requests μπορεί να κλειδώσει την εφαρμογή σε ένα απαρχαιωμένο εσωτερικό API. Προτιμήστε έναν συμβατό και υποστηριζόμενο συνδυασμό πελάτη και περιβάλλοντος εκτέλεσης και μια τεκμηριωμένη ενσωμάτωση διαμεσολαβητή.

Κρατήστε τις δύο συνομιλίες ξεχωριστές στην αναφορά: το αίτημα HTTP που χρησιμοποιείται για το άνοιγμα της σήραγγας, και μετά το πρωτόκολλο που διαπραγματεύεται με τον προορισμό μέσα της. Μπορούν να χρησιμοποιούν διαφορετικές εκδόσεις και να αποτυγχάνουν σε διαφορετικά στάδια.

Σχετικά άρθρα