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

问题描述 投票:0回答:1

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();
javascript server-side
1个回答
0
投票

服务器端。

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

0
投票

我认为API中存在一些错误

'Access-Control-Allow-Origin'在API中应该是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>

0
投票

我看不出代码有什么问题,错误可能在你的代码库的任何其他部分。如果它是开源的,分享repo的链接可能会有帮助。

试着用以下方法进行测试 curl

curl -i localhost:3001/dbpostLoad

我建议进行一些调整

app.use(cors()) 后的第一句话。const app = express();. 而且你不用手动设置那个头。

以下部分代码可以删除。

app.use((req, res, next) => {  
    res.set('Access-Control-Allow-Origin', '*');
    next();
});
© www.soinside.com 2019 - 2024. All rights reserved.