Pyyntörivi, joka reitittää Noden HTTP:n välityspalvelimen kautta
Rakenna tavallinen HTTP-välityspalvelinpyyntö Noden ydinasiakkaalla erottamalla yhteyden päätepiste, absoluuttinen kohde ja Host-otsake.
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öä:
| Arvo | Esimerkki |
|---|---|
| TCP-yhteyden päätepiste | proxy.example:8080 |
| Pyynnön kohde | http://example.com/news?q=proxy |
| Host-otsake | example.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ä.