Để node-fetch chọn tác nhân proxy sau khi chuyển hướng
Dùng một hàm tác nhân cho cả đích HTTP và HTTPS để chuyển hướng có thể chọn đúng tác nhân proxy.
URL đầu tiên có thể là HTTPS còn URL sau chuyển hướng là HTTP. Chọn tác nhân theo đích của từng yêu cầu, thay vì gắn một tác nhân duy nhất với URL đầu tiên.
Với gói node-fetch được nhập trong ứng dụng ESM, hãy truyền một hàm:
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,
});Thay URL của API và điểm cuối proxy. Với API công khai được cho phép qua một trung gian công khai, danh sách proxy HTTP cung cấp ứng viên cho proxyUrl. Hai tác nhân có thể dùng chung một trình lắng nghe proxy HTTP; tên của chúng chỉ yêu cầu gửi tới đích.
| URL được truyền cho bộ chọn | Tác nhân được chọn |
|---|---|
| https://… | httpsAgent |
| http://… | httpAgent |
Vì vậy hàm vẫn chọn đúng tác nhân nếu chuyển hướng làm đổi giao thức của đích. proxyUrl vẫn mô tả trung gian, độc lập với quyết định đó.
Tạo các tác nhân một lần cho khối lượng công việc và dùng lại. Xử lý trạng thái trả về và đọc phần thân phản hồi trong mã gọi. Giao diện tác nhân này thuộc về node-fetch; fetch tích hợp của Node dùng giao diện truyền tải khác.