Deixe o node-fetch escolher o agente de proxy após um redirecionamento
Use uma função de agente para destinos HTTP e HTTPS, para que um redirecionamento possa escolher o agente de proxy adequado.
O primeiro URL pode ser HTTPS e o URL redirecionado HTTP. Escolha o agente conforme o destino de cada requisição, em vez de prender um único agente ao primeiro URL.
Para o pacote node-fetch importado em uma aplicação ESM, forneça uma função:
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,
});Substitua o URL da API e o endpoint do proxy. Para uma API pública permitida por meio de um intermediário público, a lista de proxies HTTP fornece candidatos para proxyUrl. Os dois agentes podem usar o mesmo listener de proxy HTTP; seus nomes se referem à requisição para o destino.
| URL passado ao seletor | Agente selecionado |
|---|---|
| https://… | httpsAgent |
| http://… | httpAgent |
Portanto, a função continua escolhendo o agente correspondente se um redirecionamento mudar o protocolo do destino. proxyUrl continua descrevendo o intermediário, independentemente dessa decisão.
Crie os agentes uma vez para a carga de trabalho e reutilize-os. Trate o status retornado e consuma o corpo da resposta no código que faz a chamada. Esta interface de agente pertence ao node-fetch; o fetch embutido do Node usa outra interface de transporte.