Node.js CONNECT-Handler mussen den head-Puffer erhalen
Behandelt de CONNECT-Socket an den head-Puffer vun Node op der Grenz tëscht HTTP an Tunnel, a behält d'Bytes, déi schonn iwwer d'Headeren eraus gelies goufen.
En Node HTTP-Server behandelt eng gewéinlech Proxy-Ufro iwwer säin Ufro-Callback. CONNECT geet en anere Wee: de Server gëtt connect mam Ufro, dem Client-Socket an engem head-Puffer aus.
Dee Evenement ass d'Iwwergab tëscht HTTP-Parsing an engem Tunnel. Et gëtt keen gewéinlecht ServerResponse-Objet, deen een fir den Tunnelverkéier weider benotze kann.
| Argument | Wat et dréit |
|---|---|
req | D'CONNECT-Ufro, inklusiv hir Zilautoritéit an hir Headeren |
clientSocket | D'Verbindung zréck zum Client |
head | Tunneldaten, déi Node schonn iwwer d'HTTP-Headeren eraus gelies huet, eventuell eidel |
Fëllt d'HTTP-Entscheedung of, ier Bytes weidergereec ginn
Validéiert den ugefrotten Host a Port, wend d'Zougangs- an Authentifikatiounspolitik vum Proxy un an stellt d'Upstream-Verbindung op. CONNECT identifizéiert eng Autoritéit wéi service.example:443; parst dës Form mat IPv6-Autoritéiten am Kapp, amplaz blann op all Doppelpunkt ze splécken.
Wann den Tunnel akzeptéiert gëtt, schéckt déi erfollegräich HTTP-Antwert an duerno hir ofschléissend eidel Linn. Leet dann all head-Bytes upstream weider, ier Dir mat spéideren Bytes vum Client-Socket weiderfuert. En neien Daten-Listener unzebréngen kann e Puffer net erëmgewannen, deen dem Handler schonn separat iwwergi gouf.
Dem Node säin offiziellt Tunnelbeispill mécht déi Iwwergab mat serverSocket.write(head), ier déi zwou Stroumrichtunge verbonne ginn. Säin klengt Beispill illustréiert den Iwwergang; e bereetgestallte Proxy brauch och begrenzt Verbindungsversich, Zougangskontrollen a Liewenszyklusverwaltung.
No Erfolleg gehéieren d'Bytes zum Serviceprotokoll
Eng erfollegräich CONNECT-Antwert verwandelt d'Verbindung an e Bytestroum. Wann d'Zil eng HTTPS-Säit ass, reest hiren TLS-Austausch an dësem Stroum. Nëmmen ze tunnelen erfuerdert net, datt de Proxy en Ersatz-Websäit-Zertifikat ausstellt.
Ier CONNECT akzeptéiert gëtt, kann en HTTP-Fehler erklären, firwat et refuséiert gouf. No der Akzeptanz géif d'Schreiwen vun engem HTTP 500 an de Stroum Bytes an den Tunnelprotokoll sprëtzen. Beend oder zerstéiert amplaz déi entspriechend Verbindungen bei spéideren Ausfäll.
Verbind béid Richtunge mam Stroumbehandlung mat Géigendrockbewosstsinn, a entscheet, wéi end-, error- an close-Evenementer de Partner beenden. Behält den initialen head-Puffer als Deel vum selwechten Eegentumsmodell; et sinn Applikatiounsdaten, keng iwwerflësseg HTTP-Headeren ze entsuergen.