ใช้ EnvHttpProxyAgent เมื่อต้องให้สภาพแวดล้อมของโปรเซสเลือกเส้นทาง ใช้Undici ProxyAgent แบบระบุชัดเมื่อจุดเชื่อมต่อควรอยู่ในการตั้งค่าไคลเอนต์ ต้องส่งให้คำขอจริง การสร้าง agent อย่างเดียวไม่เปลี่ยนการเรียก 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เลือกขณะสร้าง agent เมื่อเปลี่ยนจุดเชื่อมต่อเหล่านี้ให้สร้าง dispatcher ใหม่
no_proxy จากสภาพแวดล้อมตรวจใหม่เมื่อส่งคำขอ
noProxy ในคอนสตรักเตอร์ตรึงนโยบายข้ามอย่างชัดเจน แทนการตามค่าที่เปลี่ยนในสภาพแวดล้อมภายหลัง

กฎข้ามจับคู่โฮสต์และพอร์ตที่ระบุเพิ่มเติมได้ เครื่องหมายดอกจันตัวเดียวข้ามพร็อกซีให้ทุกคำขอ ถ้าพร็อกซีไม่เห็นทราฟฟิกให้ตรวจการจับคู่ปลายทาง

บน Windows โปรเซสหลักไม่แยกตัวพิมพ์เล็กใหญ่ในชื่อสภาพแวดล้อม ดังนั้น HTTP_PROXY กับ http_proxy ไม่ใช่ค่าที่แยกกัน สำเนาสภาพแวดล้อมของ Node Worker มีความต่างด้านการแยกตัวพิมพ์ตามเอกสาร คำนึงถึงเรื่องนี้ก่อนตั้งสองรูปแบบเพื่อทดสอบลำดับ ตัวอย่างปิด dispatcher หลังทำงาน ให้เก็บไว้ระหว่างคำขอซ้ำที่ต้องใช้นโยบายจุดเชื่อมต่อชุดเดิมที่บันทึกไว้

บทความที่เกี่ยวข้อง