CORS 策略阻止了从源“http://localhost:3000”获取的访问

IT技术 javascript reactjs
2021-05-03 09:03:14

添加到数据库显示错误。我该怎么办?

从源“ http://localhost:3000获取“http:xxx”的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:无“Access-Control-Allow-Origin”标头存在于请求的资源上。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

我的功能:

  addItem = (e) => {
e.preventDefault();
const ob = {
  X: 53.0331258,
  Y: 18.7155611,
}
fetch("http://xxx", {
  method: "post",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify(ob)
})
  .then(res => res.json())
  .then(res => {
    console.log(res);
  })

}

4个回答

尝试使用“no-cors”模式。

fetch('http://localhost:8080/example', {
            mode: 'no-cors',
            method: "post",
            headers: {
                 "Content-Type": "application/json"
            },
            body: JSON.stringify(ob)
 })

您的服务器应该以如下所示的响应进行响应

Access-Control-Allow-Origin: https://localhost:3000

在您能够将其配置为解决方法之前,您可以安装以下 chrome 扩展程序以继续您的测试

https://chrome.google.com/webstore/detail/who-cors/hnlimanpjeeomjnpdglldcnpkppmndbp?hl=en-GB

但以上只是继续开发的一种变通方法

我建议您阅读这篇文章以了解 CORS https://javascript.info/fetch-crossorigin

默认情况下,浏览器 CORS 是启用的,您需要告诉浏览器可以向未为您的客户端应用程序(静态文件提供服务的服务器发送请求

如果您使用带有节点的RestFul API并快速将此中间件添加到您的文件中

app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*")
}) 

中间件应该是这样的。

app.use((req, res, next) => {
  res.header({"Access-Control-Allow-Origin": "*"});
  next();
})