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中存在一些错误
'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>
我看不出代码有什么问题,错误可能在你的代码库的任何其他部分。如果它是开源的,分享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();
});