背景
使用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/
解决方式
换成域名请求解决,即上面的地址http://ip/cgi-bin/stable_token换成http://域名/cgi-bin/stable_token做转发。