使用Cloudflare Workers调用Autodesk Derivative API时返回403错误
问题描述
我在使用Cloudflare Workers调用Autodesk Derivative API下载文件时遇到403错误,按照Autodesk官方教程步骤3操作:
- 本地发起请求完全正常,但通过Cloudflare Workers请求时持续返回403响应
- 请求
https://developer.api.autodesk.com/可以正常工作,但文件下载端点https://cdn.derivative.autodesk.com/...无法正常运行
请求代码如下:
export const fetchDerivative = async ( urn: EncodedUrn, derivative: Urn, token: Token) => { const { cookies, url } = await signedCookies(urn, derivative, token) const headers = cookies.map((value) => ["Cookie", value] as [string, string]) //FIXME: returns 403 when request from remote worker const res = await fetch(url.url, { headers: headers }) return res}
已确认所有参数(访问令牌、Cookie等)均有效,查阅Autodesk文档未找到针对Cloudflare Workers的特定限制。
可能的原因及排查方向
- 请求头缺失或格式问题:Autodesk的CDN端点可能验证
User-Agent、Referer等头信息。本地请求会自动带上浏览器的User-Agent,但Cloudflare Workers默认fetch请求的User-Agent可能被标记为可疑。尝试手动添加常见浏览器的User-Agent头:const res = await fetch(url.url, { headers: { ...Object.fromEntries(headers), "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" } }) - Cookie传递方式问题:代码中通过数组形式传递多个
Cookie头,但部分服务器只接受单个Cookie头(所有键值对用分号分隔)。尝试合并Cookie:const cookieHeader = cookies.join("; ") const res = await fetch(url.url, { headers: { "Cookie": cookieHeader } }) - Cloudflare Workers的IP被拦截:Autodesk的CDN可能对Cloudflare的IP段有访问限制。可以尝试在Workers中启用Cloudflare WARP,或使用自定义域名的Worker绕过IP检测。
- 签名Cookie的绑定限制:Autodesk返回的签名Cookie可能绑定了请求源的IP或地域,本地请求的IP与Cloudflare Workers的IP地域不同,导致Cookie失效。需确保在Workers环境中重新生成Cookie,而非复用本地生成的。
- TLS/加密套件不兼容:Cloudflare Workers的
fetch使用的TLS版本或加密套件可能不被Autodesk CDN支持,可通过测试不同配置确认。
内容的提问来源于stack exchange,提问作者KA6957
相关产品推荐
相关产品推荐

