Cloudflare Worker无法转发部分POST请求,报Cannot reconstruct a Request错误
错误原因及解决办法:Cannot reconstruct a Request with a used body.
错误的核心原因是:Request对象的body是一次性可读流,当你执行let fwd_request = new Request(request);时,这个操作会尝试读取原request的body流来创建新的请求对象,此时原request的body就被消耗掉了。后续你调用fetch(request)转发原请求时,request的body已经被用过,无法再次读取,所以抛出了这个TypeError。
你的代码里虽然没直接使用fwd_request,但创建这个对象的动作已经触发了原request body的读取,导致后续fetch操作失败。
解决办法
有两种可行的修复方案:
- 方案一:直接使用你创建的
fwd_request来转发请求,替代原request:
if (!auth) { console.log(`forwarded: ${request.url}`) return fetch(fwd_request); }
- 方案二:如果不需要
fwd_request这个变量,直接删除它,避免不必要的request复制操作:
export default { async fetch(request, env, ctx) { ctx.passThroughOnException(); const headers = request.headers; const auth = headers.get('Authorization') if (!auth) { console.log(`forwarded: ${request.url}`) return fetch(request); } ... } }
内容的提问来源于stack exchange,提问作者reachlin
相关产品推荐
相关产品推荐

