La petlinio, kiu enkursigas HTTP de Node tra prokurilo
Konstruu ordinaran HTTP-prokuran peton per la kernkliento de Node, apartigante la konektan finpunkton, la absolutan celon kaj la Host-kapon.
Por ordinara HTTP-peto tra antaŭa prokurilo, Node konektiĝas al la prokurilo kaj sendas la cellokon-URL en la petlinio. Tri valoroj priskribas tiun unu peton:
| Valoro | Ekzemplo |
|---|---|
| TCP-konekta finpunkto | proxy.example:8080 |
| Peta celo | http://example.com/news?q=proxy |
| Host-kapo | example.com |
Ĉi tiu ekzemplo por Node 22 evidentigas la apartigon:
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);
La finpunkto estas lokokupilo; elektu kandidaton el la HTTP-prokurila listo por publika HTTP-testo kaj kontrolu ĝian respondon. La ekzemplo elĉerpas la respondon post presi ĝian staton; aplikaĵo povas anstataŭe konsumi la korpon. La demando restas parto de la peta celo.
Kial la plena URL apartenas tie
Origina servilo kutime ricevas celon kiel /news?q=proxy. Antaŭa prokurilo bezonas ankaŭ la cellokon, tial HTTP/1.1 difinas la celon en absoluta formo:
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
Laŭ la reguloj de HTTP/1.1, prokurilo, kiu ricevas absolutan formon, uzas la aŭtoritaton de la URI dum plusendado kaj anstataŭigas malkonsekvencan ricevitan Host-kampon. Sendi konsekvencan cellokan Host-kapon ankoraŭ tenas la elirantan peton senduba. La konekta hostnomo de Node estas la peranto, do agordu la kapon konscie anstataŭ fidi tiun konektan adreson.
Se aŭtentikigo necesas, la akreditaĵoj de la prokurilo apartenas al ĝia salto. La peta opcio auth de Node kreas Authorization-kapon por la rimedo; ĝi ne estas ĝenerala prokurila ensaluta opcio. Uzu la postulatan skemon de la prokurilo kaj taŭgan prokurilan klienton kiam la interŝanĝo estas pli kompleksa.
HTTPS aldonas tunelon
Ĉi tiu ekzemplo kovras ordinaran HTTP-plusendadon. Tipa HTTPS-konekto tra HTTP-prokurilo unue petas CONNECT example.com:443, poste komencas TLS al la celloko ene de la akceptita tunelo. Ŝanĝi la ekzemplan URL-on al HTTPS ne aldonas tiujn stadiojn.
Por HTTPS aŭ miksita laborŝarĝo, uzu prizorgatan prokurilan agenton aŭ dissendilon kun la bezonata tunela subteno. Por kongruaj Node-versioj, unu opcio estas la fetch de Undici kun ProxyAgent. Konservu ĉi tiun malgrandan kernklientan ekzemplon por kazoj, kie la ordinara HTTP-interŝanĝo mem estas tio, kion vi bezonas kontroli aŭ kompreni.