Vanha väite, että Python lähettää CONNECTille aina HTTP/1.0, ei ole enää turvallinen yleissääntö. Python 3.12 muutti http.clientin tunnelin HTTP/1.1:een ja lisäsi Host-otsakkeen automaattisen luonnin, kun sitä ei anneta.

Tämä muutos kuuluu dokumentoituun standardikirjaston toteutukseen. Korkeamman tason HTTP-kirjasto voi ohittaa tai kääriä tunnelin toiminnan, joten kirjaa sen versio sekä Pythonin versio.

Jos välityspalvelin hylkää tunnelin, tarkastele CONNECT-vaihtoa, jonka kyseinen asiakas todella tuotti. Kohdepyynnön HTTP-version muuttaminen tai Host-otsakkeen lisääminen verkkosivuston pyyntöön ei välttämättä muuta aiempaa tunnelipyyntöä.

Samoin yksityisten kenttien muokkaaminen vanhassa Requests-sovittimen esimerkissä voi lukita sovelluksen vanhentuneeseen sisäiseen API:in. Suosi yhteensopivaa tuettua asiakkaan ja ajonaikaisen ympäristön yhdistelmää sekä dokumentoitua välityspalvelinintegrointia.

Pidä kaksi keskustelua erillään raportissa: HTTP-pyyntö, jota käytettiin tunnelin avaamiseen, ja sitten protokolla, joka neuvoteltiin kohteen kanssa sen sisällä. Ne voivat käyttää eri versioita ja epäonnistua eri vaiheissa.

Aiheeseen liittyvät artikkelit