Першы URL можа быць HTTPS, а URL пасля перанакіравання — HTTP. Выбірайце агент для адраса кожнага запыту, а не трымайце адзін агент прывязаным да першага URL.

Для імпартаванага пакета node-fetch у праграме ESM перадайце функцыю:

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

Замяніце адрас API і канчатковы пункт проксі. Для публічнага API, дазволенага праз публічнага пасярэдніка, спіс HTTP-проксі дае кандыдатаў для proxyUrl. Абодва агенты могуць выкарыстоўваць адзін і той жа слухач HTTP-проксі; іх назвы тычацца запыту да адраса.

URL, перададзены селектаруВыбраны агент
https://…httpsAgent
http://…httpAgent

Такім чынам, функцыя ўсё яшчэ выбірае адпаведны агент, калі перанакіраванне змяняе пратакол адраса. proxyUrl працягвае апісваць пасярэдніка незалежна ад гэтага рашэння.

Стварыце агенты адзін раз для нагрузкі і выкарыстоўвайце паўторна. Апрацуйце вернуты статус і прачытайце цела адказу ў кодзе, які выклікае. Гэты інтэрфейс агента належыць node-fetch; убудаваны fetch у Node выкарыстоўвае іншы інтэрфейс транспарту.

Падобныя артыкулы