Într-o cerere HTTP obișnuită printr-un proxy de redirecționare, Node se conectează la proxy și trimite URL-ul destinației în linia de cerere. Trei valori descriu acea singură cerere:

ValoareExemplu
Punctul de conectare TCPproxy.example:8080
Ținta cereriihttp://example.com/news?q=proxy
Antetul Hostexample.com

Acest exemplu pentru Node 22 face separarea explicită:

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

Punctul de conectare este un substituent; alegeți un candidat din lista de proxy-uri HTTP pentru un test HTTP public și verificați răspunsul. Exemplul golește răspunsul după ce tipărește starea; o aplicație poate consuma în schimb corpul. Interogarea rămâne parte din ținta cererii.

De ce URL-ul complet își are locul acolo

Un server de origine primește de obicei o țintă precum /news?q=proxy. Un proxy de redirecționare are nevoie și de destinație, de aceea HTTP/1.1 definește ținta în formă absolută:

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

Conform regulilor HTTP/1.1, un proxy care primește forma absolută folosește autoritatea URI-ului la redirecționare și înlocuiește un câmp Host primit inconsistent. Trimiterea unui antet Host de destinație consistent menține totuși cererea de ieșire fără ambiguitate. Numele de gazdă al conexiunii din Node este intermediarul, așa că setați antetul deliberat în loc să vă bazați pe acea adresă de conectare.

Dacă este necesară autentificarea, acreditările proxy-ului aparțin saltului său. Opțiunea de cerere auth din Node creează un antet Authorization pentru resursă; nu este o opțiune generală de autentificare la proxy. Folosiți schema cerută de proxy și un client proxy adecvat când schimbul este mai complex.

HTTPS adaugă un tunel

Acest exemplu acoperă redirecționarea HTTP simplă. O conexiune HTTPS printr-un proxy HTTP tipică solicită mai întâi CONNECT example.com:443, apoi pornește TLS către destinație în interiorul tunelului acceptat. Schimbarea URL-ului exemplului în HTTPS nu adaugă acele etape.

Pentru HTTPS sau o încărcare mixtă, folosiți un agent sau un dispecer proxy întreținut cu suportul de tunel necesar. Pentru versiunile compatibile de Node, o opțiune este fetch-ul Undici cu un ProxyAgent. Păstrați acest mic exemplu de client de bază pentru cazurile în care schimbul HTTP simplu este exact ceea ce trebuie să controlați sau să înțelegeți.

Articole similare