Node HTTP'син прокси аркылуу багыттаган суроо сабы
Туташуунун акыркы чекитин, абсолюттук максатты жана Host аталышын бөлүп, Node'дун негизги кардары менен жөнөкөй HTTP прокси суроосун түзүңүз.
Алдыга жиберүүчү прокси аркылуу жөнөкөй HTTP суроосунда Node проксиге туташып, барар URL'ди суроо сабына салып жиберет. Бир суроону үч маани сүрөттөйт:
| Маани | Мисал |
|---|---|
| TCP туташуусунун акыркы чекити | proxy.example:8080 |
| Суроонун максаты | http://example.com/news?q=proxy |
| Host аталышы | example.com |
Бул Node 22 мисалы бөлүүнү айкын көрсөтөт:
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);
Акыркы чекит — орун толтургуч; ачык HTTP сыноосу үчүн HTTP проксилер тизмесинен талапкер тандап, анын жообун текшериңиз. Мисал статусту басып чыгаргандан кийин жоопту түгөтөт; колдонмо анын ордуна денени колдоно алат. Сурам суроонун максатынын бөлүгү бойдон калат.
Толук URL эмне үчүн ошол жерде
Баштапкы сервер адатта /news?q=proxy сыяктуу максат алат. Алдыга жиберүүчү проксиге да барар жер керек, ошондуктан HTTP/1.1 максатты абсолюттук формада аныктайт:
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
HTTP/1.1 эрежелери боюнча абсолюттук форманы алган прокси жиберүүдө URI'нин ыйгарым укугун колдонуп, дал келбеген кабыл алынган Host талаасын алмаштырат. Ырааттуу барар жердин Host аталышын жиберүү чыгуучу суроону дагы эле так кылат. Node'дун туташуу хост аты — ортомчу, ошондуктан аталышты ошол туташуу дарегине таянуунун ордуна атайын коюңуз.
Эгер аутентификация талап кылынса, проксинин эсептик маалыматтары анын өз баскычына таандык. Node'дун auth суроо параметри ресурс үчүн Authorization аталышын түзөт; бул проксиге кирүүнүн жалпы параметри эмес. Алмашуу татаал болгондо прокси талап кылган схеманы жана ылайыктуу прокси кардарын колдонуңуз.
HTTPS туннель кошот
Бул мисал жөнөкөй HTTP жиберүүнү камтыйт. Адаттагы HTTP прокси аркылуу HTTPS туташуусу адегенде CONNECT example.com:443 сурайт, анан кабыл алынган туннелдин ичинде барар жерге TLS баштайт. Мисалдын URL'in HTTPS'ке өзгөртүү бул баскычтарды кошпойт.
HTTPS же аралаш жүктөм үчүн керектүү туннель колдоосу бар тейленүүчү прокси агентин же жиберүүчүнү колдонуңуз. Шайкеш Node версиялары үчүн бир вариант — ProxyAgent менен Undici fetch. Жөнөкөй HTTP алмашуусу өзү көзөмөлдөө же түшүнүү керек болгон учурлар үчүн бул кичинекей негизги кардар мисалын сактап калыңыз.