背景

使用IP转发请求微信获取token得请求(因为白名单问题,cloudflare的workers没有固定的ip)。

问题发现

本地请求的时候都是没有问题的,但是部署到workers后,发现请求出现error code: 1003

const res: any = await fetch("http://ip/cgi-bin/stable_token", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      grant_type: "client_credential",
      appid: appId,
      secret: secret,
    }),
  }).then(r => r.json());

排查发现:好像被 Cloudflare 拦截了,因为你试图从 Worker 或浏览器中访问一个 IP 地址

  • Cloudflare Workers 运行在 Cloudflare 的边缘网络中
  • 为了安全,Cloudflare 会阻止 Worker 访问外部裸 IP 地址
  • 这是 Cloudflare 官方策略限制,无法绕过

官网链接:https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-1xxx-errors/error-1003/

cloudflare:error code: 1003

解决方式

换成域名请求解决,即上面的地址http://ip/cgi-bin/stable_token换成http://域名/cgi-bin/stable_token做转发。