Beiðnilínan sem beinir HTTP í Node í gegnum proxy
Búðu til venjulega HTTP-proxy beiðni með kjarnaforritasafni Node með því að aðskilja tengiendapunktinn, algilda markið og Host-hausinn.
Við venjulega HTTP-beiðni í gegnum framsenda proxy tengist Node proxynu og sendir áfangastaðar-URL í beiðnilínunni. Þrjú gildi lýsa þessari einu beiðni:
| Gildi | Dæmi |
|---|---|
| TCP-tengiendapunktur | proxy.example:8080 |
| Mark beiðninnar | http://example.com/news?q=proxy |
| Host-haus | example.com |
Þetta Node 22 dæmi gerir aðskilnaðinn skýran:
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);
Endapunkturinn er staðgengill; veldu frambjóðanda úr HTTP-proxylistanum fyrir opinbera HTTP-prófun og athugaðu svar hans. Dæmið tæmir svarið eftir að hafa prentað stöðuna; forrit getur neytt líkamans í staðinn. Fyrirspurnin er áfram hluti af marki beiðninnar.
Hvers vegna fulla URL-ið á heima þar
Upprunamiðlari fær venjulega mark eins og /news?q=proxy. Framsenda proxy þarf líka áfangastaðinn, þess vegna skilgreinir HTTP/1.1 markið í algildu formi:
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
Samkvæmt reglum HTTP/1.1 notar proxy sem tekur við algildu formi vald URIsins við framsendingu og skiptir út ósamkvæmu Host-sviði sem barst. Að senda samkvæman áfangastaðar-Host-haus heldur útbeiðninni samt ótvíræðri. Tengihýslisnafn Node er milliliðurinn, svo stilltu hausinn viljandi í stað þess að treysta á það tengislóð.
Ef auðkenningar er krafist tilheyra skilríki proxysins hoppinu hans. Beiðnivalkostur Nodes auth býr til Authorization-haus fyrir auðlindina; hann er ekki almennur innskráningarkostur proxys. Notaðu skemað sem proxsið krefst og viðeigandi proxybiðlara þegar skiptin eru flóknari.
HTTPS bætir við gangi
Þetta dæmi nær yfir venjulega HTTP-framsendingu. Dæmigert HTTPS-tenging í gegnum HTTP-proxy biður fyrst um CONNECT example.com:443 og hefur þá TLS til áfangastaðarins inni í samþykktum ganginum. Að breyta URL dæmisins í HTTPS bætir ekki þeim þrepum við.
Fyrir HTTPS eða blandaða vinnslu skaltu nota viðhaldið proxyumboð eða sendingaraðila með nauðsynlegum gangstuðningi. Fyrir samhæfar Node-útgáfur er einn valkostur fetch Undici með ProxyAgent. Haltu þessu litla kjarnabiðlaradæmi fyrir tilvik þar sem venjulegu HTTP-skiptin sjálf eru það sem þú þarft að stýra eða skilja.