Node HTTP-þjónn meðhöndlar venjulega proxy-beiðni í gegnum beiðni-callback sinn. CONNECT fer aðra leið: þjónninn gefur út connect ásamt beiðninni, client-socketnum og head-buffri.

Sá atburður er afhendingin milli HTTP-þáttunar og göngs. Það er ekkert venjulegt ServerResponse-hlutur til að halda áfram að nota fyrir göngumferðina.

RökHvað það ber
reqCONNECT-beiðnin, þar á meðal áfangastaðarvaldið og hausarnir
clientSocketTengingin aftur til biðlarans
headGöngugögn sem Node hefur þegar lesið fram yfir HTTP-hausana, hugsanlega tóm

Ljúktu HTTP-ákvörðuninni áður en bætum er miðlað

Staðfestu umbeðna hýsilinn og portið, beittu aðgangs- og auðkenningarstefnu proxysins og komdu á tengingu uppstreymis. CONNECT auðkennir vald eins og service.example:443; þátttu það form með IPv6-vald í huga í stað þess að kljúfa blint á hverjum tvípunkti.

Þegar göngin eru samþykkt skaltu senda farsæla HTTP-svarið og síðan lokatómrið. Sendu síðan öll head-bæti uppstreymis áður en haldið er áfram með síðari bætum frá client-socketnum. Að tengja nýjan gagnahlustara getur ekki endurheimt buffer sem þegar hefur verið afhentur meðhöndlaranum sérstaklega.

Opinbera göngudæmið í Node framkvæmir þá afhendingu með serverSocket.write(head) áður en tveimur straumstefnunum er tengt saman. Litla dæmið sýnir umskiptin; uppsettur proxy þarf líka takmörkuð tengitilraunir, aðgangsstýringar og lífsferilsmeðferð.

Eftir árangur tilheyra bætin þjónustuprotokollinni

Farsælt CONNECT-svar breytir tengingunni í bætastraum. Ef markið er HTTPS-vefsíða fer TLS-skiptin hennar innan þess straums. Að eingöngu gönguleggja hana krefst þess ekki að proxyið gefi út staðgengilsskírteini vefsíðu.

Áður en CONNECT er samþykkt getur HTTP-villa útskýrt hvers vegna var hafnað. Eftir samþykkt myndi skrifa HTTP 500 inn í strauminn sprauta bætum inn í gönguprotokollina. Ljúktu eða eyðileggðu frekar viðeigandi tengingum við síðari bilanir.

Tengdu báðar stefnur með straummeðferð með bakþrýstingsvitund, og ákveddu hvernig end-, error- og close-atburðir ljúka jafningjanum. Varðveittu upphaflega head-buffrið sem hluta af sama eignarhaldslíkani; það eru forritsgögn, ekki umfram HTTP-hausar til að henda.

Tengdir greinar