Python http.client CONNECT: HTTP/1.1 da Python 3.12
Verificate l'implementazione di Python e del trasporto prima di applicare vecchie soluzioni HTTP/1.0 CONNECT.
La vecchia affermazione che Python invii sempre HTTP/1.0 per CONNECT non è più una regola generale sicura. Python 3.12 ha cambiato il tunneling di http.client in HTTP/1.1 e ha aggiunto la generazione automatica dell'intestazione Host quando non viene fornita.
Quella modifica appartiene all'implementazione documentata della libreria standard. Una libreria HTTP di livello superiore può sovrascrivere o avvolgere il comportamento del tunnel, quindi annotate la sua versione oltre a quella di Python.
Se un proxy rifiuta il tunnel, esaminate lo scambio CONNECT che quel client ha effettivamente prodotto. Cambiare la versione HTTP della richiesta di destinazione o aggiungere un'intestazione Host alla richiesta al sito web non modifica necessariamente la precedente richiesta di tunnel.
Allo stesso modo, modificare campi privati in un vecchio esempio di adattatore Requests può vincolare l'applicazione a un'API interna obsoleta. Preferite una combinazione compatibile e supportata di client e ambiente di esecuzione e un'integrazione proxy documentata.
Tenete separate le due conversazioni nel rapporto: la richiesta HTTP usata per aprire il tunnel, poi il protocollo negoziato con la destinazione al suo interno. Possono usare versioni diverse e fallire in fasi diverse.