Nämä arvot eivät ole yhden tilan kilpailevia kirjoitusasuja:

Connection: Upgrade
Connection: keep-alive, Upgrade

Toinen luettelee kaksi yhteysasetusta. HTTP määrittelee Connectionin pilkulla erotetuksi luetteloksi, jonka asetusnimet eivät erota kirjainkokoa. Koodi, joka vertaa koko arvoa tarkkaan Upgrade-merkkijonoon, jättää huomaamatta kelvollisen luettelon, joka sisältää kyseisen asetuksen.

Tavallisessa edelleenlähetyksessä HTTP-välittäjä jäsentää saapuvan kentän, poistaa sen asetusten nimeämät kentät ja poistaa sitten Connectionin itsensä tai korvaa sen välittäjän omilla ohjausasetuksilla edelleenlähetettävää yhteyttä varten.

Pelkän kovakoodatun Keep-Alive-kentän poistaminen ei riitä. Viesti voi nimetä luettelossa toisen yhteyskohtaisen kentän, eikä se kenttä saa vuotaa tavalliseen edelleenlähetykseen.

Protokollan päivityksen tukeminen edellyttää kahden yhteyden ja uuden protokollan tietoista käsittelyä. Saapuvien Upgrade-otsakkeiden sokea kopioiminen ei ole tuon luovutuksen toteutus.

Kun yksi selain toimii ja toinen epäonnistuu, vertaa todellisia kenttäarvoja välittäjän molemmilla puolilla. Ero yhden tokenin ja kahden tokenin luettelon välillä voi paljastaa jäsennysvirheen ilman, että selaimen on jäljiteltävä toisen selaimen tarkkaa muotoilua.

Tämä koskee HTTP-viestejä, joita välityspalvelin jäsentää. Tavallinen HTTPS CONNECT -tunneli ei paljasta salatun verkkosivuston Connection-kenttää välityspalvelimelle.

Aiheeseen liittyvät artikkelit