Pri običajni zahtevi HTTP prek posredovalnega proxyja se Node poveže s proxyjem in pošlje URL cilja v vrstici zahteve. Tri vrednosti opisujejo to eno zahtevo:

VrednostPrimer
Končna točka povezave TCPproxy.example:8080
Cilj zahtevehttp://example.com/news?q=proxy
Glava Hostexample.com

Ta primer za Node 22 ločevanje naredi očitno:

const http = require('node:http');
const destination = new URL('http://example.com/news?q=proxy');

const request = http.get({
  hostname: 'proxy.example',
  port: 8080,
  path: destination.href,
  headers: { Host: destination.host },
  signal: AbortSignal.timeout(15000),
}, (response) => {
  console.log(response.statusCode);
  response.on('error', console.error);
  response.resume();
});
request.on('error', console.error);

Končna točka je nadomestni znak; izberite kandidata s seznama proxyjev HTTP za javni preskus HTTP in preverite njegov odgovor. Primer po izpisu stanja odgovor izprazni; aplikacija lahko namesto tega porabi telo. Poizvedba ostane del cilja zahteve.

Zakaj celoten URL sodi tja

Izvorni strežnik običajno prejme cilj, kot je /news?q=proxy. Posredovalni proxy potrebuje tudi cilj, zato HTTP/1.1 določa cilj v absolutni obliki:

GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com

Po pravilih HTTP/1.1 proxy, ki prejme absolutno obliko, pri posredovanju uporabi pooblastilo URI in zamenja nedosledno prejeto polje Host. Pošiljanje dosledne glave Host cilja kljub temu ohrani odhodno zahtevo nedvoumno. Ime gostitelja povezave v Node je posrednik, zato glavo nastavite namerno, namesto da bi se zanašali na ta naslov povezave.

Če je potrebna overitev, poverilnice proxyja pripadajo njegovemu skoku. Možnost zahteve auth v Node ustvari glavo Authorization za vir; to ni splošna možnost prijave v proxy. Uporabite shemo, ki jo zahteva proxy, in ustrezen odjemalec proxy, ko je izmenjava bolj zapletena.

HTTPS doda tunel

Ta primer pokriva običajno posredovanje HTTP. Tipična povezava HTTPS prek proxyja HTTP najprej zahteva CONNECT example.com:443 in nato zažene TLS do cilja znotraj sprejetega tunela. Sprememba URL-ja primera v HTTPS teh stopenj ne doda.

Za HTTPS ali mešano obremenitev uporabite vzdrževanega zastopnika ali razpošiljatelja proxyja s potrebno podporo za tunele. Za združljive različice Node je ena možnost fetch Undici s ProxyAgent. Ta majhen primer osnovnega odjemalca ohranite za primere, ko je prav običajna izmenjava HTTP tisto, kar morate nadzorovati ali razumeti.

Sorodni članki