import { createClient } from 'contentful';
import { HttpsProxyAgent } from 'https-proxy-agent';

const agent = new HttpsProxyAgent('http://proxy.example:8080');
const client = createClient({
  space: spaceId,
  accessToken,
  adapter: 'http',
  httpsAgent: agent,
  proxy: false,
});

对 Delivery API 操作沿用现有的 spaceId/accessToken 和这个客户端。依赖视为已经具备。对于经公共中介放行的公开 Delivery API 请求,HTTP 代理列表可为该 agent 的 HTTP 代理 URL 提供候选。

默认 API 走 HTTPS,因此选择 httpsAgent。该 agent 能连到 HTTP 代理的监听器并建立 CONNECT。proxy:false 可避免 Axios 再叠加一层代理选择。

显式的 Node http 适配器很关键:浏览器网络与其他适配器不会从这些字段得到 Node 套接字路由。在客户端整个工作期间保留该 agent,请求结束后在关闭时释放。

相关文章