提问者:小点点

从服务器端代码接收响应时出现CORS错误


CORS策略阻止了从源“url”获取“url”的访问:对预飞行请求的响应未通过访问控制检查:请求的资源上不存在“access-control-allow-origin”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no-cors”,以便在禁用CORS的情况下获取资源。

我已经尝试了几乎所有的尝试和获得通过这个错误,但它仍然出现任何想法或提示,我们非常感谢。

服务器端:

const express = require('express');
const cors = require('cors');
const DataStore = require('Nedb')

const app = express();

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

const database = new DataStore('database.db');
database.loadDatabase();

app.use(cors());
    app.use(express.json());

app.post('/dbpostLoad', (req, res) => {
     database.find({}).exec(function (err, data){
        res.json(data)
     }); 
});

客户端:

window.addEventListener('load',(event)=> { 
    const options1 = {
        method : 'POST',
        headers: {
            'Content-Type' : 'application/json'
        }
    } 

    getData();
    async function getData(){
        const response = await fetch(loadData_URL, options1);
        const data = await response.json();

共3个答案

匿名用户

服务器端:

const cors = require('cors')({origin: true});
app.use((req, res, next) => { 
  cors(req, res, () => {
       //Your code here
  })
});

匿名用户

我认为API有些错误。

API中“access-control-allow-origin”应为true。

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="content-type" />
        <add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS, PUT" />
      </customHeaders>
    </httpProtocol>

匿名用户

我没有看到任何问题的代码,错误可能是在任何其他部分的代码库。如果它是开源的,分享回购的链接可能会有帮助。

curl -i localhost:3001/dbpostLoad

app.use(cors())将是const app=express();之后的第一个语句。并且您不必手动设置该头。

可以删除以下部分代码:

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