Per a una petició HTTP ordinària a través d'un proxy d'avançament, Node es connecta al proxy i envia l'URL de destinació a la línia de petició. Tres valors descriuen aquesta sola petició:

ValorExemple
Punt de connexió TCPproxy.example:8080
Objectiu de la peticióhttp://example.com/news?q=proxy
Capçalera Hostexample.com

Aquest exemple de Node 22 fa explícita la separació:

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

El punt de connexió és un marcador de posició; trieu un candidat de la llista de proxys HTTP per a una prova HTTP pública i comproveu-ne la resposta. L'exemple buida la resposta després d'imprimir l'estat; una aplicació pot consumir el cos en lloc seu. La consulta continua formant part de l'objectiu de la petició.

Per què l'URL complet hi pertany

Un servidor d'origen normalment rep un objectiu com /news?q=proxy. Un proxy d'avançament també necessita la destinació, per tant HTTP/1.1 defineix l'objectiu en forma absoluta:

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

Segons les regles d'HTTP/1.1, un proxy que rep la forma absoluta utilitza l'autoritat de l'URI en reenviar i substitueix un camp Host rebut inconsistent. Enviar una capçalera Host de destinació coherent manté la petició sortint inequívoca. El nom d'amfitrió de la connexió de Node és l'intermediari, així que establiu la capçalera deliberadament en lloc de confiar en aquesta adreça de connexió.

Si cal autenticació, les credencials del proxy pertanyen al seu salt. L'opció de petició auth de Node crea una capçalera Authorization per al recurs; no és una opció general d'inici de sessió de proxy. Utilitzeu l'esquema que exigeix el proxy i un client de proxy adequat quan l'intercanvi és més complex.

HTTPS afegeix un túnel

Aquest exemple cobreix el reenviament HTTP simple. Una connexió HTTPS a través d'un proxy HTTP típica primer sol·licita CONNECT example.com:443 i després inicia TLS cap a la destinació dins del túnel acceptat. Canviar l'URL de l'exemple a HTTPS no afegeix aquestes etapes.

Per a HTTPS o una càrrega mixta, utilitzeu un agent o despatxador de proxy mantingut amb el suport de túnel necessari. Per a versions compatibles de Node, una opció és el fetch d'Undici amb un ProxyAgent. Conserveu aquest petit exemple de client bàsic per als casos en què l'intercanvi HTTP simple és el que cal controlar o entendre.

Articles relacionats