Python http.client CONNECT: HTTP/1.1 siden Python 3.12
Kontrollér Python- og transportimplementeringen, før du anvender gamle HTTP/1.0 CONNECT-løsninger.
Den gamle udtalelse om, at Python altid sender HTTP/1.0 til CONNECT, er ikke længere en sikker generel regel. Python 3.12 ændrede http.client-tunnelering til HTTP/1.1 og tilføjede automatisk generering af Host-headeren, når den ikke angives.
Ændringen hører til den dokumenterede implementering af standardbiblioteket. Et HTTP-bibliotek på højere niveau kan tilsidesætte eller indpakke tunneladfærden, så notér dets version sammen med Pythons version.
Hvis en proxy afviser tunnelen, skal du undersøge den CONNECT-udveksling, som klienten faktisk har produceret. At ændre HTTP-versionen på destinationsanmodningen eller tilføje en Host-header til webstedsanmodningen ændrer ikke nødvendigvis den tidligere tunnelanmodning.
På samme måde kan redigering af private felter i et gammelt Requests-adaptereksempel låse applikationen til en forældet intern API. Foretræk en kompatibel understøttet kombination af klient og runtime samt en dokumenteret proxyintegration.
Hold de to samtaler adskilt i rapporten: den HTTP-anmodning, der bruges til at åbne tunnelen, og derefter den protokol, der forhandles med destinationen indeni. De kan bruge forskellige versioner og fejle på forskellige stadier.