Python http.client CONNECT: HTTP/1.1 sinds Python 3.12
Controleer de Python- en transportimplementatie voordat u oude HTTP/1.0 CONNECT-oplossingen toepast.
De oude bewering dat Python voor CONNECT altijd HTTP/1.0 verstuurt, is niet langer een veilige algemene regel. Python 3.12 veranderde het tunnelen van http.client naar HTTP/1.1 en voegde automatische generatie van de Host-header toe wanneer die niet wordt opgegeven.
Die wijziging hoort bij de gedocumenteerde implementatie van de standaardbibliotheek. Een HTTP-bibliotheek op een hoger niveau kan het tunnelgedrag overschrijven of omhullen, dus noteer de versie ervan en die van Python.
Als een proxy de tunnel weigert, onderzoek dan de CONNECT-uitwisseling die die client werkelijk heeft geproduceerd. De HTTP-versie van de bestemmingsaanvraag wijzigen of een Host-header aan de websiteaanvraag toevoegen verandert niet noodzakelijk de eerdere tunnelaanvraag.
Evenzo kan het bewerken van privévelden in een oud Requests-adaptervoorbeeld de applicatie vastzetten op een verouderde interne API. Geef de voorkeur aan een compatibele, ondersteunde combinatie van client en runtime en een gedocumenteerde proxy-integratie.
Houd de twee gesprekken gescheiden in het rapport: de HTTP-aanvraag die is gebruikt om de tunnel te openen, en daarna het protocol dat daarbinnen met de bestemming is onderhandeld. Ze kunnen verschillende versies gebruiken en in verschillende fasen mislukken.