리디렉션 후 node-fetch가 프록시 에이전트를 선택하게 하기
HTTP와 HTTPS 대상 모두에 에이전트 함수를 넘기면 리디렉션 후에도 알맞은 프록시 에이전트를 고를 수 있습니다.
첫 URL은 HTTPS이고 리디렉션된 URL은 HTTP일 수 있습니다. 하나의 에이전트를 첫 URL에 묶어 두지 말고 요청마다 대상에 맞는 에이전트를 고르세요.
ESM 애플리케이션에서 가져온 node-fetch 패키지에는 함수를 넘깁니다.
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 URL과 프록시 엔드포인트를 바꾸세요. 공용 중개자를 통해 허용된 공용 API라면 HTTP 프록시 목록이 proxyUrl 후보를 제공합니다. 두 에이전트는 같은 HTTP 프록시 리스너를 쓸 수 있습니다. 이름은 대상으로 가는 요청을 가리킵니다.
| 선택자에 전달되는 URL | 선택된 에이전트 |
|---|---|
| https://… | httpsAgent |
| http://… | httpAgent |
따라서 리디렉션이 대상 프로토콜을 바꿔도 함수는 알맞은 에이전트를 계속 고릅니다. proxyUrl은 그 판단과 무관하게 중개자를 계속 설명합니다.
에이전트는 작업 부하마다 한 번만 만들고 재사용하세요. 돌려받은 상태를 처리하고 호출하는 코드에서 응답 본문을 읽으세요. 이 에이전트 인터페이스는 node-fetch의 것이며, Node 내장 fetch는 다른 전송 인터페이스를 씁니다.