La première URL peut être en HTTPS et l'URL redirigée en HTTP. Choisissez l'agent selon la destination de chaque requête, plutôt que de lier un seul agent à la première URL.

Pour le paquet node-fetch importé dans une application ESM, fournissez une fonction :

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

Remplacez l'URL de l'API et le point de terminaison du proxy. Pour une API publique autorisée via un intermédiaire public, la liste de proxys HTTP fournit des candidats pour proxyUrl. Les deux agents peuvent utiliser le même écouteur de proxy HTTP ; leurs noms renvoient à la requête vers la destination.

URL transmise au sélecteurAgent sélectionné
https://…httpsAgent
http://…httpAgent

La fonction sélectionne donc toujours l'agent correspondant si une redirection change le protocole de la destination. proxyUrl continue de décrire l'intermédiaire, indépendamment de ce choix.

Créez les agents une fois pour la charge de travail et réutilisez-les. Traitez le statut renvoyé et consommez le corps de la réponse dans le code appelant. Cette interface d'agent appartient à node-fetch ; le fetch intégré de Node utilise une autre interface de transport.

Articles similaires