在 Bun 中,fetch 支持通過 HTTP 或 HTTPS 代理發送請求。這在公司網絡上或當你需要確保請求通過特定 IP 地址發送時很有用。
ts
await fetch("https://example.com", {
// 代理服務器的 URL
proxy: "https://username:password@proxy.example.com:8080",
});proxy 選項可以是 URL 字符串或帶有 url 和可選 headers 的對象。如果代理需要身份驗證,URL 可以包含用戶名和密碼。它可以是 http:// 或 https://。
自定義代理頭
要向代理服務器發送自定義頭(對於代理身份驗證令牌、自定義路由等很有用),請使用對象格式:
ts
await fetch("https://example.com", {
proxy: {
url: "https://proxy.example.com:8080",
headers: {
"Proxy-Authorization": "Bearer my-token",
"X-Proxy-Region": "us-east-1",
},
},
});headers 屬性接受普通對象或 Headers 實例。這些頭直接發送到代理服務器,用於 HTTPS 目標的 CONNECT 請求或 HTTP 目標的代理請求。
如果你提供了 Proxy-Authorization 頭,它將覆蓋代理 URL 中指定的任何憑據。
環境變量
你還可以將 $HTTP_PROXY 或 $HTTPS_PROXY 環境變量設置為代理 URL。當你想對所有請求使用相同的代理時,這很有用。
sh
HTTPS_PROXY=https://username:password@proxy.example.com:8080 bun run index.ts