Express.js CORS 配置,PUT 不行?

One*_* T. -1 javascript error-handling node.js cors express

我在后端有一个 React 应用程序和 Nodejs(Express)。部署到主机服务器后,我为更新某些文档所做的功能停止正常工作。它给出了 CORS 错误:

在此处输入图片说明

我有这行代码来处理 server.js 中的 CORS 策略:

app.use((req, res, next) => {
  res.set({"Access-Control-Allow-Origin" : "*", 
           "Access-Control-Allow-Methods" : "HEAD, OPTIONS, GET, POST, PUT, PATCH, DELETE", 
           "Access-Control-Allow-Headers" : "Content-Type, Authorization, X-Requested-With"})
  next();
});
Run Code Online (Sandbox Code Playgroud)

GET 和 POST 方法可以,但对 PUT 不起作用(不知道 Delete 是否有效没试过)

我在这个问题上有很多时间;试过这个:https : //stackoverflow.com/a/42463858/11896129

在网上寻找了一堆解决方案,尝试从 IIS web.config 文件配置它,但没有解决我的问题。我可能会错过哪个部分?

Jon*_*lms 5

MDN 所述:

此外,对于可能对服务器数据产生副作用的 HTTP 请求方法(特别是对于GET 以外的HTTP 方法,或者对于某些 MIME 类型的 POST 使用),规范要求浏览器“预检”请求,请求支持的方法从服务器使用 HTTP OPTIONS 请求方法,然后在服务器“批准”后,使用实际的 HTTP 请求方法发送实际请求。

所以你必须回答预检请求:

  app.options("*", (req, res) => {
    res.status(200).send("Preflight request allowed");
  });
Run Code Online (Sandbox Code Playgroud)

在此处阅读有关预检请求的更多信息。