La primera URL puede ser HTTPS y la URL redirigida HTTP. Elige el agente según el destino de cada solicitud, en lugar de mantener un solo agente atado a la primera URL.

Para el paquete node-fetch importado en una aplicación ESM, proporciona una función:

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,
});

Sustituye la URL de la API y el punto de conexión del proxy. Para una API pública permitida a través de un intermediario público, la lista de proxies HTTP ofrece candidatos para proxyUrl. Los dos agentes pueden usar el mismo oyente de proxy HTTP; sus nombres se refieren a la solicitud de destino.

URL pasada al selectorAgente seleccionado
https://…httpsAgent
http://…httpAgent

Por tanto, la función sigue eligiendo el agente correspondiente si una redirección cambia el protocolo del destino. proxyUrl sigue describiendo al intermediario, con independencia de esa decisión.

Crea los agentes una vez para la carga de trabajo y reutilízalos. Gestiona el estado devuelto y consume el cuerpo de la respuesta en el código que llama. Esta interfaz de agente pertenece a node-fetch; el fetch integrado de Node usa una interfaz de transporte distinta.

Artículos relacionados