Egy továbbító proxyn keresztüli közönséges HTTP-kérésnél a Node a proxyhoz kapcsolódik, és a cél-URL-t a kérésorban küldi el. Három érték írja le ezt az egy kérést:

ÉrtékPélda
TCP-kapcsolat végpontjaproxy.example:8080
Kérés céljahttp://example.com/news?q=proxy
Host fejlécexample.com

Ez a Node 22-es példa egyértelművé teszi az elválasztást:

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

A végpont helyőrző; válasszon jelöltet a HTTP-proxylistáról egy nyilvános HTTP-teszthez, és ellenőrizze a válaszát. A példa az állapot kiírása után kimeríti a választ; az alkalmazás helyette a törzset fogyaszthatja. A lekérdezés a kérés céljának része marad.

Miért tartozik oda a teljes URL

Az eredeti kiszolgáló általában /news?q=proxy formájú célt kap. A továbbító proxynak is szüksége van a célra, ezért a HTTP/1.1 abszolút formában határozza meg a célt:

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

A HTTP/1.1 szabályai szerint az abszolút formát kapó proxy továbbításkor az URI tekintélyét használja, és lecseréli az inkonzisztens kapott Host mezőt. Egy konzisztens cél-Host fejléc küldése így is egyértelművé teszi a kimenő kérést. A Node kapcsolati hosztneve a közvetítő, ezért a fejlécet szándékosan állítsa be, ne arra a kapcsolati címre hagyatkozzon.

Ha hitelesítés szükséges, a proxy hitelesítő adatai a saját ugrásához tartoznak. A Node auth kérésopciója Authorization fejlécet hoz létre az erőforráshoz; ez nem általános proxy-bejelentkezési opció. Használja a proxy által megkövetelt sémát és egy megfelelő proxyklienst, ha a csere összetettebb.

A HTTPS alagutat ad hozzá

Ez a példa az egyszerű HTTP-továbbítást fedi le. Egy tipikus HTTPS-kapcsolat HTTP-proxyn keresztül először CONNECT example.com:443-et kér, majd TLS-t indít a cél felé az elfogadott alagúton belül. A példa URL-jének HTTPS-re váltása nem adja hozzá ezeket a lépéseket.

HTTPS vagy vegyes terhelés esetén használjon karbantartott proxyügynököt vagy diszpécsert a szükséges alagút-támogatással. Kompatibilis Node-verziókhoz az egyik lehetőség az Undici fetch ProxyAgenttel. Tartsa meg ezt a kis magügyfél-példát azokra az esetekre, amikor maga az egyszerű HTTP-csere az, amit irányítania vagy értenie kell.

Kapcsolódó cikkek