Дазвольце node-fetch выбраць проксі-агент пасля перанакіравання
Выкарыстоўвайце функцыю агента для адрасоў HTTP і HTTPS, каб перанакіраванне магло выбраць адпаведны проксі-агент.
Першы 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 выкарыстоўвае іншы інтэрфейс транспарту.