Ved ein vanleg HTTP-førespurnad gjennom ein framsendande proxy koplar Node til proxyen og sender mål-URL-en i førespurnadslinja. Tre verdiar skildrar den eine førespurnaden:

VerdiDøme
TCP-tilkoplingsendepunktproxy.example:8080
Førespurnadsmålhttp://example.com/news?q=proxy
Host-headerexample.com

Dette Node 22-dømet gjer skiljet tydeleg:

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

Endepunktet er ein plasshaldar; vel ein kandidat frå HTTP-proxylista for ein offentleg HTTP-test og kontroller svaret. Dømet tømmer svaret etter å ha skrive ut statusen; ein applikasjon kan bruke kroppen i staden. Spørjinga blir verande ein del av førespurnadsmålet.

Kvifor den fulle URL-en høyrer der

Ein opphavsserver får vanlegvis eit mål som /news?q=proxy. Ein framsendande proxy treng òg målet, difor definerer HTTP/1.1 målet i absolutt form:

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

Etter reglane i HTTP/1.1 brukar ein proxy som får absolutt form, autoriteten til URI-en ved videresending og erstattar eit inkonsistent motteke Host-felt. Å sende ein konsistent mål-Host-header held likevel den utgåande førespurnaden eintydig. Tilkoplingsvertnamnet i Node er mellomleddet, så set headeren med vilje i staden for å lite på den tilkoplingsadressa.

Viss autentisering er påkravd, høyrer legitimasjonen til proxyen til hoppet hans. Førespurnadsvalet auth i Node lagar ein Authorization-header for ressursen; det er ikkje eit generelt proxy-innloggingsval. Bruk skjemaet proxyen krev, og ein passande proxyklient når utvekslinga er meir kompleks.

HTTPS legg til ein tunnel

Dette dømet dekkjer vanleg HTTP-videresending. Ei typisk HTTPS-tilkopling gjennom ein HTTP-proxy ber først om CONNECT example.com:443 og startar så TLS til målet inne i den godtekne tunnelen. Å endre døme-URL-en til HTTPS legg ikkje til desse trinna.

For HTTPS eller ei blanda arbeidsmengd, bruk ein vedlikehalden proxyagent eller dispatcher med den nødvendige tunnelenstøtta. For kompatible Node-versjonar er eitt alternativ Undicis fetch med ein ProxyAgent. Hald dette vesle kjerneklientdømet for tilfelle der den vanlege HTTP-utvekslinga sjølv er det du må kontrollere eller forstå.

Relaterte artiklar