Rreshti i kërkesës që drejton HTTP të Node përmes një proxy
Ndërtoni një kërkesë të thjeshtë HTTP proxy me klientin bazë të Node, duke ndarë pikën e lidhjes, objektivin absolut dhe kokën Host.
Në një kërkesë të zakonshme HTTP përmes një proxy përpara, Node lidhet me proxy-n dhe dërgon URL-në e destinacionit në rreshtin e kërkesës. Tre vlera përshkruajnë atë kërkesë të vetme:
| Vlera | Shembull |
|---|---|
| Pika e lidhjes TCP | proxy.example:8080 |
| Objektivi i kërkesës | http://example.com/news?q=proxy |
| Koka Host | example.com |
Ky shembull për Node 22 e bën ndarjen të qartë:
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);
Pika e lidhjes është një vendmbajtëse; zgjidhni një kandidat nga lista e proxy-ve HTTP për një test publik HTTP dhe kontrolloni përgjigjen e tij. Shembulli e zbraz përgjigjen pasi printon statusin; një aplikacion mund të konsumojë trupin në vend të kësaj. Pyetësori mbetet pjesë e objektivit të kërkesës.
Pse URL-ja e plotë i takon atje
Një server origjine zakonisht merr një objektiv si /news?q=proxy. Një proxy përpara ka nevojë gjithashtu për destinacionin, prandaj HTTP/1.1 e përcakton objektivin në formë absolute:
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
Sipas rregullave të HTTP/1.1, një proxy që merr formën absolute përdor autoritetin e URI-t gjatë përcjelljes dhe zëvendëson një fushë Host të marrë jokonsistente. Dërgimi i një koke Host konsistente të destinacionit e mban kërkesën dalëse të paqartë. Emri i hostit të lidhjes në Node është ndërmjetësi, prandaj vendoseni kokën me qëllim në vend që të mbështeteni te ajo adresë lidhjeje.
Nëse kërkohet vërtetim, kredencialet e proxy-t i përkasin hopit të vet. Opsioni i kërkesës auth në Node krijon një kokë Authorization për burimin; nuk është një opsion i përgjithshëm për t'u identifikuar në proxy. Përdorni skemën që kërkon proxy-i dhe një klient proxy të përshtatshëm kur shkëmbimi është më i ndërlikuar.
HTTPS shton një tunel
Ky shembull mbulon përcjelljen e thjeshtë HTTP. Një lidhje HTTPS përmes një proxy HTTP tipike kërkon fillimisht CONNECT example.com:443, pastaj nis TLS drejt destinacionit brenda tunelit të pranuar. Ndryshimi i URL-së së shembullit në HTTPS nuk i shton ato faza.
Për HTTPS ose një ngarkesë të përzier, përdorni një agjent ose dërgues proxy të mirëmbajtur me mbështetjen e nevojshme të tunelit. Për versionet e përputhshme të Node, një opsion është fetch i Undici me një ProxyAgent. Mbajeni këtë shembull të vogël të klientit bazë për rastet kur shkëmbimi i thjeshtë HTTP është pikërisht ajo që duhet të kontrolloni ose të kuptoni.