De oanfraachrigel dy't HTTP fan Node fia in proxy liedt
Bou in gewoane HTTP-proxyoanfraach mei de kernkliïnt fan Node troch it ferbiningsin punt, it absolute doel en de Host-header te skieden.
By in gewoane HTTP-oanfraach fia in trochstjoerende proxy ferbynt Node him mei de proxy en stjoert de bestimmings-URL yn 'e oanfraachrigel. Trije wearden beskriuwe dy iene oanfraach:
| Wearde | Foarbyld |
|---|---|
| TCP-ferbiningsin punt | proxy.example:8080 |
| Oanfraachdoel | http://example.com/news?q=proxy |
| Host-header | example.com |
Dit Node 22-foarbyld makket de skieding dúdlik:
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);
It einpunt is in plakhâlder; kies in kandidaat út 'e HTTP-proxylist foar in iepenbiere HTTP-test en kontrolearje syn antwurd. It foarbyld driget it antwurd nei it printsjen fan 'e status; in applikaasje kin ynstee de body brûke. De query bliuwt diel fan it oanfraachdoel.
Wêrom't de folsleine URL dêr heart
In boarneserver krijt normaal in doel lykas /news?q=proxy. In trochstjoerende proxy hat ek de bestimming nedich, dêrom definiearret HTTP/1.1 it doel yn absolute foarm:
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
Neffens de regels fan HTTP/1.1 brûkt in proxy dy't de absolute foarm krijt it gezach fan 'e URI by it trochstjoeren en ferfangt in ynkonsistint ûntfongen Host-fjild. It stjoeren fan in konsistinte bestimmings-Host-header hâldt de útgeande oanfraach dochs iendúdich. De ferbiningshostnamme fan Node is de tuskenpersoan, dus set de header bewust ynstee fan te fertrouwen op dat ferbiningsadres.
As autentikaasje fereaske is, hearre de ynloggegevens fan 'e proxy by syn hop. De oanfraachopsje auth fan Node makket in Authorization-header foar de boarne; it is gjin algemiene proxy-oanmeldopsje. Brûk it skema dat de proxy fereasket en in geskikte proxykliïnt as de útwikseling komplekser is.
HTTPS foeget in tunnel ta
Dit foarbyld beslacht gewoane HTTP-trochstjoering. In typyske HTTPS-ferbining fia in HTTP-proxy freget earst CONNECT example.com:443 oan en start dan TLS nei de bestimming binnen de akseptearre tunnel. It feroarjen fan 'e foarbyld-URL nei HTTPS foeget dy stappen net ta.
Brûk foar HTTPS of in mingde wurklast in ûnderhâlden proxy-agent of dispatcher mei de fereaske tunnelstipe. Foar kompatibele Node-ferzjes is ien opsje de fetch fan Undici mei in ProxyAgent. Hâld dit lytse kernkliïnt-foarbyld foar gefallen wêr't de gewoane HTTP-útwikseling sels is wat jo kontrolearje of begripe moatte.