Server HTTP ta' Node jimmaniġġja talba proxy ordinarja permezz tal-callback tat-talba tiegħu. CONNECT jieħu triq oħra: is-server joħroġ connect mat-talba, mas-socket tal-klijent u ma' head buffer.

Dak l-avveniment huwa l-konsenja bejn l-analiżi HTTP u tunnel. M'hemmx oġġett ServerResponse ordinarju biex ikompli jintuża għat-traffiku tat-tunnel.

ArgumentX'jġorr
reqIt-talba CONNECT, inkluż l-awtorità tad-destinazzjoni u l-headers tagħha
clientSocketIl-konnessjoni lura lill-klijent
headData tat-tunnel li Node diġà qara lil hinn mill-headers HTTP, possibbilment vojta

Temm id-deċiżjoni HTTP qabel ma tgħaddi l-bytes

Ivvalida l-host u l-port mitluba, applika l-politika ta' aċċess u awtentikazzjoni tal-proxy, u stabbilixxi l-konnessjoni upstream. CONNECT jidentifika awtorità bħal service.example:443; analizza dak il-formaat b'awtoritajiet IPv6 f'moħħok minflok ma taqsam bl-addokk f'kull żewġ punti.

Meta t-tunnel jiġi aċċettat, ibgħat ir-risposta HTTP ta' suċċess segwita mill-linja vojta li ttemmha. Imbagħad għaddi kwalunkwe byte head upstream qabel ma tkompli bil-bytes aktar tard mis-socket tal-klijent. Li twaħħal listener tad-data ġdid ma jistax jirkupra buffer li diġà ngħata b'mod separat lill-handler.

L-eżempju uffiċjali tat-tunnel ta' Node jagħmel dik il-konsenja b'serverSocket.write(head) qabel ma jgħaqqad iż-żewġ direzzjonijiet tal-fluss. L-eżempju żgħir tiegħu juri t-tranżizzjoni; proxy implimentat jeħtieġ ukoll tentattivi ta' konnessjoni limitati, kontrolli ta' aċċess u ġestjoni taċ-ċiklu tal-ħajja.

Wara s-suċċess, il-bytes jappartjenu għall-protokoll tas-servizz

Risposta CONNECT ta' suċċess tibdel il-konnessjoni fi fluss ta' bytes. Jekk il-mira hija sit HTTPS, l-iskambju TLS tiegħu jivvjaġġa ġewwa dak il-fluss. Sempliċement it-tunnel tiegħu ma jeħtieġx li l-proxy joħroġ ċertifikat tas-sit sostitut.

Qabel ma jiġi aċċettat CONNECT, żball HTTP jista' jispjega għaliex ġie miċħud. Wara l-aċċettazzjoni, li tikteb HTTP 500 fil-fluss tittinjetta bytes fil-protokoll tat-tunnel. Minflok, temm jew qered il-konnessjonijiet xierqa f'fallimenti aktar tard.

Qabbad iż-żewġ direzzjonijiet bil-ġestjoni tal-fluss konxja tal-backpressure, u iddeċiedi kif l-avvenimenti end, error u close itemmu l-pari. Ippreserva l-head buffer inizjali bħala parti mill-istess mudell ta' sjieda; huma data tal-applikazzjoni, mhux headers HTTP żejda x'jitwarrbu.

Artikli relatati