Za običan HTTP zahtjev kroz napredni proxy, Node se povezuje s proxyjem i šalje URL odredišta u redu zahtjeva. Tri vrijednosti opisuju taj jedan zahtjev:

VrijednostPrimjer
Krajnja tačka TCP vezeproxy.example:8080
Cilj zahtjevahttp://example.com/news?q=proxy
Zaglavlje Hostexample.com

Ovaj primjer za Node 22 čini razdvajanje očitim:

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);

Krajnja tačka je rezervirano mjesto; odaberite kandidata s liste HTTP proxyja za javni HTTP test i provjerite njegov odgovor. Primjer ispušta odgovor nakon ispisa statusa; aplikacija može umjesto toga trošiti tijelo. Upit ostaje dio cilja zahtjeva.

Zašto puni URL pripada tamo

Izvorni poslužitelj obično prima cilj poput /news?q=proxy. Napredni proxy također treba odredište, pa HTTP/1.1 definira cilj u apsolutnom obliku:

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

Prema pravilima HTTP/1.1, proxy koji primi apsolutni oblik koristi autoritet URI-ja pri prosljeđivanju i zamjenjuje nedosljedno primljeno polje Host. Slanje dosljednog zaglavlja Host odredišta i dalje čini odlazni zahtjev nedvosmislenim. Naziv hosta veze u Nodeu je posrednik, pa zaglavlje postavite namjerno umjesto da se oslanjate na tu adresu veze.

Ako je potrebna autentifikacija, vjerodajnice proxyja pripadaju njegovom skoku. Nodeova opcija zahtjeva auth stvara zaglavlje Authorization za resurs; to nije opća opcija prijave na proxy. Koristite shemu koju proxy zahtijeva i prikladnog proxy klijenta kada je razmjena složenija.

HTTPS dodaje tunel

Ovaj primjer pokriva obično prosljeđivanje HTTP-a. Tipična HTTPS veza kroz HTTP proxy prvo zatraži CONNECT example.com:443, a zatim pokrene TLS prema odredištu unutar prihvaćenog tunela. Promjena URL-a primjera na HTTPS ne dodaje te faze.

Za HTTPS ili mješoviti posao koristite održavanog proxy agenta ili dispečera s potrebnom podrškom za tunele. Za kompatibilne verzije Nodea jedna je opcija Undicijev fetch s ProxyAgentom. Zadržite ovaj mali primjer osnovnog klijenta za slučajeve kada je sama obična HTTP razmjena ono što trebate kontrolirati ili razumjeti.

Povezani članci