仅提出要求时发生CORS航班前问题

我有一个奇怪的问题。 在浏览器上放置请求时出现cors错误:

access to fetch at 'http://localhost:3015/pathtest/api/v1/results/cc7637578fad1a6fcfb4249fbf000a13/load' from origin 'https://localhost:9444' has been blocked by CORS policy: Method PUT is not allowed by access-Control-Allow-Methods in preflight response.

这是我的在后端(nodejs)中启用cors的代码。其他所有api请求均已通过以下代码修复,并且仅将put仍返回cors问题:

app.use(function(req,res,next) {
  // res.header("access-control-allow-origin","*");
  // res.header("access-Control-Allow-Headers","Origin,X-Requested-With,Content-Type,accept");
  // res.header('access-Control-Allow-Methods','PATCH,PUT,POST,GET,DELETE,OPTIONS');
  //     // allow preflight
  //     if (req.method === 'OPTIONS') {
  //       res.send(200);
  //   } else {
  //       next();
  //   }

  res.header('access-control-allow-origin','*');
res.header('access-Control-Allow-Methods','GET,PATCH,OPTIONS');
res.header('access-Control-Allow-Headers','Content-Type,Authorization,Content-Length,X-Requested-With');
// allow preflight
if (req.method === 'OPTIONS') {
    res.send(200);
} else {
    next();
}
});

我想念什么吗?

**更新

仅提出要求时发生CORS航班前问题

liufangxin 回答:仅提出要求时发生CORS航班前问题

通过我们的两次调查和评论,我们发现这是造成您问题的原因...

您显示的屏幕快照说明您在问题中显示的中间件代码未处理该请求。显然,这意味着在您接管请求之前,您还有其他中间件,并且该中间件没有做您想要的事情,因此它妨碍了您想要处理请求的中间件。

如果在寻找解决方案时,将app.use(cors())之类的代码(或其他尝试处理CORs请求的代码)放入代码中,并且该代码位于您自己的自定义中间件之前,您自己的中间件的方式。删除其他与CORS相关的中间件,以便您的自定义中间件可以不受限制地访问传入的请求并可以完成其工作。

请记住,中间件和其他请求处理程序是按照注册时的顺序运行的,并且如果给定的处理程序发送了响应并且未调用next(),那么链中的其他请求处理程序/中间件将不再起作用应该要求。

本文链接:https://www.f2er.com/3068928.html

大家都在问