Tavallisessa edelleen välittävän välityspalvelimen kautta tehtävässä HTTP-pyynnössä Node yhdistää välityspalvelimeen ja lähettää kohde-URL:n pyyntöriville. Kolme arvoa kuvaavat tätä yhtä pyyntöä:

ArvoEsimerkki
TCP-yhteyden päätepisteproxy.example:8080
Pyynnön kohdehttp://example.com/news?q=proxy
Host-otsakeexample.com

Tämä Node 22 -esimerkki tekee erottelun selväksi:

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

Päätepiste on paikkamerkki; valitse ehdokas HTTP-välityspalvelinluettelosta julkiseen HTTP-testiin ja tarkista sen vastaus. Esimerkki tyhjentää vastauksen tulostettuaan tilan; sovellus voi kuluttaa rungon sen sijaan. Kysely pysyy osana pyynnön kohdetta.

Miksi koko URL kuuluu sinne

Alkuperäpalvelin saa yleensä kohteen kuten /news?q=proxy. Edelleen välittävä välityspalvelin tarvitsee myös kohteen, joten HTTP/1.1 määrittelee kohteen absoluuttisessa muodossa:

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

HTTP/1.1:n sääntöjen mukaan absoluuttisen muodon vastaanottava välityspalvelin käyttää URI:n valtuutta välittäessään ja korvaa epäjohdonmukaisen vastaanotetun Host-kentän. Johdonmukaisen kohde-Host-otsakkeen lähettäminen pitää lähtevän pyynnön silti yksiselitteisenä. Noden yhteyden isäntänimi on välittäjä, joten aseta otsake tarkoituksella sen sijaan, että luottaisit kyseiseen yhteysosoitteeseen.

Jos todennus vaaditaan, välityspalvelimen tunnukset kuuluvat sen hyppyyn. Noden auth-pyyntövaihtoehto luo Authorization-otsakkeen resurssille; se ei ole yleinen välityspalvelimen kirjautumisvaihtoehto. Käytä välityspalvelimen vaatimaa skeemaa ja sopivaa välityspalvelinasiakasta, kun vaihto on monimutkaisempi.

HTTPS lisää tunnelin

Tämä esimerkki kattaa tavallisen HTTP-välityksen. Tyypillinen HTTPS-yhteys HTTP-välityspalvelimen kautta pyytää ensin CONNECT example.com:443 ja aloittaa sitten TLS:n kohteeseen hyväksytyn tunnelin sisällä. Esimerkin URL:n muuttaminen HTTPS:ksi ei lisää näitä vaiheita.

Käytä HTTPS:ää tai sekakuormaa varten ylläpidettyä välityspalvelinagenttia tai -lähettäjää, jossa on tarvittava tunnelituki. Yhteensopiville Node-versioille yksi vaihtoehto on Undicin fetch ProxyAgentilla. Pidä tämä pieni ydinasiakasesimerkki tapauksiin, joissa juuri tavallinen HTTP-vaihto on se, mitä sinun on hallittava tai ymmärrettävä.

Aiheeseen liittyvät artikkelit