Řádek požadavku, který vede HTTP v Node přes proxy
Sestavte obyčejný HTTP požadavek na proxy pomocí základního klienta Node tak, že oddělíte koncový bod připojení, absolutní cíl a hlavičku Host.
U obyčejného HTTP požadavku přes dopřednou proxy se Node připojí k proxy a odešle URL cíle v řádku požadavku. Tři hodnoty popisují tento jediný požadavek:
| Hodnota | Příklad |
|---|---|
| Koncový bod TCP připojení | proxy.example:8080 |
| Cíl požadavku | http://example.com/news?q=proxy |
| Hlavička Host | example.com |
Tento příklad pro Node 22 oddělení zpřehledňuje:
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);
Koncový bod je zástupný; vyberte kandidáta ze seznamu HTTP proxy pro veřejný HTTP test a zkontrolujte jeho odpověď. Příklad po vypsání stavu odpověď vyčerpá; aplikace může místo toho spotřebovat tělo. Dotaz zůstává součástí cíle požadavku.
Proč tam patří celá URL
Zdrojový server obvykle dostává cíl jako /news?q=proxy. Dopředná proxy potřebuje i cíl, proto HTTP/1.1 definuje cíl v absolutním tvaru:
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
Podle pravidel HTTP/1.1 proxy, která přijme absolutní tvar, při předávání použije autoritu URI a nahradí nekonzistentní přijaté pole Host. Odeslání konzistentní hlavičky Host cíle přesto udržuje odchozí požadavek jednoznačný. Název hostitele připojení v Node je prostředník, proto hlavičku nastavte záměrně, místo abyste se spoléhali na tuto adresu připojení.
Pokud je vyžadováno ověření, přihlašovací údaje proxy patří jejímu hopu. Volba požadavku auth v Node vytváří hlavičku Authorization pro zdroj; není to obecná volba přihlášení k proxy. Když je výměna složitější, použijte schéma vyžadované proxy a vhodného proxy klienta.
HTTPS přidává tunel
Tento příklad pokrývá obyčejné předávání HTTP. Typické HTTPS připojení přes HTTP proxy nejprve požádá o CONNECT example.com:443 a poté zahájí TLS k cíli uvnitř přijatého tunelu. Změna URL příkladu na HTTPS tyto fáze nepřidá.
Pro HTTPS nebo smíšenou zátěž použijte udržovaného proxy agenta nebo dispečera s požadovanou podporou tunelů. Pro kompatibilní verze Node je jednou z možností fetch z Undici s ProxyAgent. Tento malý příklad základního klienta si ponechte pro případy, kdy právě obyčejná HTTP výměna je to, co potřebujete ovládat nebo chápat.