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:

WeardeFoarbyld
TCP-ferbiningsin puntproxy.example:8080
Oanfraachdoelhttp://example.com/news?q=proxy
Host-headerexample.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.

Relatearre artikelen