Låt node-fetch välja proxyagenten efter en omdirigering
Använd en agentfunktion för HTTP- och HTTPS-destinationer så att en omdirigering kan välja rätt proxyagent.
Den första URL:en kan vara HTTPS och den omdirigerade URL:en HTTP. Välj agenten utifrån destinationen för varje begäran i stället för att binda en enda agent till den första URL:en.
För det importerade node-fetch-paketet i en ESM-applikation, ange en funktion:
import fetch from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
import { HttpsProxyAgent } from 'https-proxy-agent';
const proxyUrl = 'http://proxy.example:8080';
const httpAgent = new HttpProxyAgent(proxyUrl);
const httpsAgent = new HttpsProxyAgent(proxyUrl);
const response = await fetch('https://api.example/', {
agent: url => url.protocol === 'http:' ? httpAgent : httpsAgent,
});Byt ut API-URL:en och proxy-slutpunkten. För ett offentligt API som tillåts via en offentlig mellanhand ger HTTP-proxylistan kandidater för proxyUrl. De två agenterna kan använda samma HTTP-proxy-lyssnare; deras namn avser begäran till destinationen.
| URL som skickas till väljaren | Vald agent |
|---|---|
| https://… | httpsAgent |
| http://… | httpAgent |
Funktionen väljer därför fortfarande rätt agent om en omdirigering ändrar destinationens protokoll. proxyUrl beskriver fortfarande mellanhanden, oberoende av det beslutet.
Skapa agenterna en gång för arbetsbelastningen och återanvänd dem. Hantera statusen som returneras och läs svarskroppen i den anropande koden. Detta agentgränssnitt tillhör node-fetch; Nodes inbyggda fetch använder ett annat transportgränssnitt.