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();
服务器端:
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();
});