小编Dhi*_*pta的帖子

如何让 Cloudflare 工作器覆盖响应状态代码但保留响应的其余部分?

具体来说,我有兴趣将代码 403 的所有响应更改为代码 404,并将代码 301 的所有响应更改为 302。我不希望响应的任何其他部分发生变化,除了状态文本(我想为空) . 以下是我自己的尝试:

addEventListener("fetch", event => {
  event.respondWith(fetchAndModify(event.request));
});

async function fetchAndModify(request) {
  // Send the request on to the origin server.
  const response = await fetch(request);

  const body = await response.body
  newStatus = response.status
  if (response.status == 403) {
    newStatus = 404
  } else if (response.status == 301) {
    newStatus = 302
  }

  // Return modified response.
  return new Response(body, {
    status: newStatus,
    statusText: "",
    headers: response.headers
  });
}
Run Code Online (Sandbox Code Playgroud)

我已确认此代码有效。我想知道这是否有可能覆盖除状态代码或文本以外的部分响应,如果是这样,我该如何避免?如果这违反 Cloudflare 工作人员或 javascript …

javascript cloudflare cloudflare-workers

3
推荐指数
1
解决办法
1212
查看次数