A kérésor, amely proxyn keresztül irányítja a Node HTTP-t
Építsen egyszerű HTTP proxykérést a Node magügyfelével, elválasztva a kapcsolat végpontját, az abszolút célt és a Host fejlécet.
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ék | Példa |
|---|---|
| TCP-kapcsolat végpontja | proxy.example:8080 |
| Kérés célja | http://example.com/news?q=proxy |
| Host fejléc | example.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.