Sa karaniwang kahilingang HTTP sa isang pasulong na proxy, kumokonekta ang Node sa proxy at ipinapadala ang URL ng destinasyon sa linya ng kahilingan. Tatlong halaga ang naglalarawan sa nag-iisang kahilingang iyon:

HalagaHalimbawa
Endpoint ng koneksyong TCPproxy.example:8080
Target ng kahilinganhttp://example.com/news?q=proxy
Header na Hostexample.com

Ginagawang tahasan ng halimbawang Node 22 na ito ang paghihiwalay:

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

Ang endpoint ay isang pansamantalang panghalili; pumili ng kandidato mula sa listahan ng HTTP proxy para sa pampublikong pagsubok ng HTTP at tingnan ang tugon nito. Inuubos ng halimbawa ang tugon pagkatapos i-print ang katayuan; maaaring gamitin ng isang aplikasyon ang katawan sa halip. Nananatiling bahagi ng target ng kahilingan ang query.

Bakit naroroon ang buong URL

Karaniwang tumatanggap ang pinagmulang server ng target tulad ng /news?q=proxy. Kailangan din ng pasulong na proxy ang destinasyon, kaya tinutukoy ng HTTP/1.1 ang target sa ganap na anyo:

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

Ayon sa mga tuntunin ng HTTP/1.1, ginagamit ng proxy na tumatanggap ng ganap na anyo ang awtoridad ng URI kapag nagpapasa at pinapalitan ang hindi pare-parehong natanggap na field na Host. Ang pagpapadala ng pare-parehong header na Host ng destinasyon ay nagpapanatili pa ring malinaw ang palabas na kahilingan. Ang hostname ng koneksyon ng Node ay ang tagapamagitan, kaya sadyang itakda ang header sa halip na umasa sa address ng koneksyong iyon.

Kung kailangan ang pagpapatotoo, ang mga kredensyal ng proxy ay pag-aari ng sarili nitong hop. Ang opsyon sa kahilingang auth ng Node ay gumagawa ng header na Authorization para sa resource; hindi ito pangkalahatang opsyon sa pag-log in sa proxy. Gamitin ang scheme na hinihingi ng proxy at angkop na kliyente ng proxy kapag mas kumplikado ang palitan.

Nagdadagdag ng tunnel ang HTTPS

Sinasaklaw ng halimbawang ito ang simpleng pagpapasa ng HTTP. Ang karaniwang koneksyong HTTPS sa isang HTTP proxy ay unang humihingi ng CONNECT example.com:443, pagkatapos ay nagsisimula ng TLS patungo sa destinasyon sa loob ng tinanggap na tunnel. Ang pagpapalit ng URL ng halimbawa sa HTTPS ay hindi nagdadagdag ng mga yugtong iyon.

Para sa HTTPS o pinaghalong workload, gumamit ng inaalagaang ahente o dispatcher ng proxy na may kinakailangang suporta sa tunnel. Para sa mga katugmang bersyon ng Node, isang opsyon ang fetch ng Undici na may ProxyAgent. Panatilihin ang maliit na halimbawang ito ng pangunahing kliyente para sa mga kaso kung saan ang simpleng palitan ng HTTP mismo ang kailangan mong kontrolin o unawain.

Kaugnay na mga artikulo