Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 即使允许所有来源,cors错误仍然存在*_Javascript_Node.js_Cors - Fatal编程技术网

Javascript 即使允许所有来源,cors错误仍然存在*

Javascript 即使允许所有来源,cors错误仍然存在*,javascript,node.js,cors,Javascript,Node.js,Cors,我在我的网站上有一个帖子请求http://localhost:3000 并向http://localhost:5500 即使在允许所有原点后,也会出现错误。我在这件事上耽搁了几个小时,请帮忙 我得到这个错误 Access to fetch at 'http://localhost:3000/upload' from origin 'http://localhost:5500' has been blocked by CORS policy: Response to preflight reque

我在我的网站上有一个帖子请求http://localhost:3000 并向http://localhost:5500 即使在允许所有原点后,也会出现错误。我在这件事上耽搁了几个小时,请帮忙

我得到这个错误

Access to fetch at 'http://localhost:3000/upload' from origin 'http://localhost:5500' has been blocked
by CORS policy:
Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
这是我设置标题的地方

app.all("*", (req, res, next) => {
  // CORS headers
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS");
  res.header("Access-Control-Allow-Credentials", "true");
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept, Key, Authorization , client-security-token"
  );
  next();
});
这是我的取回请求

 const resp = await fetch("http://localhost:3000/upload", {
          method: "POST",
          headers: {
            Authorization: `Bearer ${localStorage.getItem("access_token")}`,
            accept: "application/json",
          },
          body: formData,
        });
        const data = await resp.json();
        console.log(data);
试试下面

添加了一个条件以检查请求类型是否为
OPTIONS
,然后返回状态为
200
的响应

app.all("*", (req, res, next) => {
  // CORS headers
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS");
  res.header("Access-Control-Allow-Credentials", "true");
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept, Key, Authorization , client-security-token"
  );
  if (req.method === "OPTIONS") {
      return res.status(200).end();
  }
  
  next();
});


您使用的是正确的标题,但不是正确的状态,正如它在错误消息“它没有HTTP ok状态”中所述。使用200响应
选项
请求。只需使用带有导入/要求和
应用程序的cors模块。使用(cors())
@HereticMonkey如何响应选项??任何例子