Използвайте EnvHttpProxyAgent, когато средата на процеса трябва да избира маршрута. Използвайте изричен Undici ProxyAgent, когато крайната точка принадлежи на конфигурацията на клиента. Подайте го на действителната заявка; само създаването на агента не променя нито едно fetch извикване.

import { EnvHttpProxyAgent, fetch } from 'undici';

const dispatcher = new EnvHttpProxyAgent();

try {
  const response = await fetch("https://example.com/", {
    dispatcher,
    signal: AbortSignal.timeout(15000),
  });
  console.log(response.status);
  await response.arrayBuffer();
} finally {
  await dispatcher.close();
}

Запазете кода като proxy-check.mjs в ES-модулна среда с наличен Undici. Това POSIX стартиране задава двата прокси маршрута и празен списък за заобикаляне:

http_proxy=http://203.0.113.10:8080 \
https_proxy=http://203.0.113.10:8080 \
no_proxy= \
node proxy-check.mjs

Заменете документационната точка с вашето HTTP прокси или кандидат от списъка с HTTP прокси. Присвояванията важат за това извикване; други обвивки използват различен синтаксис.

В Undici 8.12.3 малките http_proxy, https_proxy и no_proxy имат приоритет пред съответните главни, когато съществуват и двете форми. HTTP и HTTPS целите избират собствени настройки. Само HTTP настройка осигурява и резерв за HTTPS; само HTTPS не осигурява HTTP. Не приемайте, че важи конвенцията ALL_PROXY на друг клиент.

ВходКога тази версия го използва
HTTP/HTTPS прокси средаИзбира се при създаване на агента. Създайте нов dispatcher след промяна на тези точки.
no_proxy от средатаПроверява се отново при изпращане на заявките.
noProxy в конструктораИзрично фиксира политиката за заобикаляне, вместо да следва по-късни промени в средата.

Заобикалянията могат да съвпадат с хостове и незадължителни портове; една звездичка заобикаля проксито за всички заявки. Проверете съвпадението на целта, ако проксито не вижда трафик.

В Windows главният процес не различава регистъра на имената в средата, затова HTTP_PROXY и http_proxy не са независими стойности. Копията на средата в Node Worker имат документирано разграничение по регистър. Вземете го предвид, преди да зададете двете изписвания за тест на приоритета. Примерът затваря dispatcher след работата; пазете го, докато повтарящи се заявки изискват същата запазена политика на точките.

Подобни статии