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-ийг HTTPS болгох нь тэдгээр үе шатыг нэмэхгүй.
HTTPS эсвэл холимог ачаалалд шаардлагатай туннелийн дэмжлэг бүхий арчилгаатай прокси агент эсвэл илгээгч ашиглана уу. Нийцтэй Node хувилбаруудад нэг сонголт бол ProxyAgent-тай Undici-ийн fetch юм. Энгийн HTTP солилцоо өөрөө таны хянах эсвэл ойлгох зүйл болсон тохиолдолд энэ жижиг үндсэн клиентийн жишээг хадгална уу.