Код обичног HTTP захтева кроз напредни прокси, Node се повезује са проксијем и шаље URL одредишта у линији захтева. Три вредности описују тај један захтев:

ВредностПример
Крајња тачка TCP везеproxy.example:8080
Циљ захтеваhttp://example.com/news?q=proxy
Заглавље Hostexample.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-у је посредник, па заглавље поставите намерно уместо да се ослањате на ту адресу везе.

Ако је потребна аутентификација, акредитиви проксија припадају његовом скоку. Опција захтева auth у Node-у ствара заглавље Authorization за ресурс; то није општа опција пријаве на прокси. Користите шему коју прокси захтева и одговарајући прокси клијент када је размена сложенија.

HTTPS додаје тунел

Овај пример покрива обично прослеђивање HTTP-а. Типична HTTPS веза кроз HTTP прокси прво затражи CONNECT example.com:443, а затим покрене TLS ка одредишту унутар прихваћеног тунела. Промена URL-а примера у HTTPS не додаје те фазе.

За HTTPS или мешовити посао користите одржаваног прокси агента или диспечера са потребном подршком за тунеле. За компатибилне верзије Node-а једна је могућност Undici fetch са ProxyAgent-ом. Задржите овај мали пример основног клијента за случајеве када је сама обична HTTP размена оно што треба да контролишете или разумете.

Повезани чланци