当我从Heroku实时服务器命中我的Node js API时,CORS策略错误即将到来



当我从angular应用程序(这是在本地设置)击中我的node js API,我保持我的node js API在Heroku live服务器,我得到这个错误。CORS策略:无Access-Control-Allow-Origin,但与此同时,当我将API保存在AWS服务器或本地服务器设置中时,我没有得到任何错误。一切都很顺利。我安装了cors并使用了setHeader,在我的API中,我附上了错误和代码的图像,请帮助我得到这个的解决方案。

我使用这段代码的allow-access-header

// Add headers
app.use(function (req, res, next) {
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', '*');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, HEAD,PATCH, DELETE');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin, X-Requested-With, Content-Type, Accept, Authorization');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});

这里我使用这个API

app.get("/getNoOfUsersGuardians",(request, response) => {
let userArr = [];
let _userData = [];
database.collection("_User").find().toArray((error, result) => {
if(error) {
return response.json({ status: false, data: '', message: error });
}
_userData = result;
var j = 1;
// console.log(_userData[0]);
for (var i = 0; i < _userData.length; i++){
var userId = "_User$"+_userData[i]['_id'];
let name=_userData[i]['name'];
let username=_userData[i]['username'];
let userEmail = _userData[i]['email'];
let mobileno=_userData[i]['phoneNumber'];
let phonecountrycode=_userData[i]['phoneCountryCode'];
let _updated_At =_userData[i]['_updated_at'];
database.collection("GuardianInvitation").find({_p_fromUser: userId, status:"accepted"}).count((error, result1)=>{
if(result1)
{
database.collection("_Session").findOne({_p_user: userId}, function(err, resultdevice) {
if (resultdevice) {
tempuserArr={ };
tempuserArr.userid=userId;
tempuserArr.username=username;
tempuserArr.name=name;
tempuserArr.mobileno=mobileno;
tempuserArr.userEmail=userEmail;
tempuserArr.phoneCountryCode=phonecountrycode;
tempuserArr._updated_at = _updated_At;
tempuserArr.NoofGuardian=result1;
tempuserArr.device=resultdevice["device"];
userArr.push(tempuserArr);
}
});
}
j++;
if(_userData.length == j){
if(userArr.length > 0){
response.send({ status: true, data: userArr, message: 'User liSt found that have Number of guardians' });
} else {
response.send({ status: false, data: "", message: 'Guardians list not found' });
}
}
});
}
});
});

请查看这里的图像…控制台错误图像

您可以尝试像这样添加节点cors选项

const corsOptions = {
origin: '*',
methods: [
'GET',
'POST',
],
allowedHeaders: [
'Content-Type',
],
};
app.use(cors(corsOptions));

最新更新