![](/img/trans.png)
[英]How to solve CORS error in NodeJS independent of CORS middleware
[英]How to solve CORS error in nodejs while using Postman?
我使用 nodejs 和 mongodb 創建了一個 REST Api 並且我想在 postman 中測試它但是在這樣做時我收到了 CORS 錯誤。
var express = require('express');
var log = require('morgan')('dev');
var bodyParser = require('body-parser');
var properties = require('./config/properties');
var db = require('./config/database.js');
//hero routes
var herosRoutes = require('./api/heros/heros.routes');
var app = express();
//configure bodyparser
var bodyParserJSON = bodyParser.json();
var bodyParserURLEncoded = bodyParser.urlencoded({extended:true});
//initialise express router
var router = express.Router();
// call the database connectivity function
db.mongoc();
// configure app.use()
app.use(log);
app.use(bodyParserJSON);
app.use(bodyParserURLEncoded);
// Error handling
app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Credentials", "true");
res.setHeader("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
res.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Origin,Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers,Authorization");
next();
});
// use express router
app.use('/api',router);
//call heros routing
herosRoutes.hero(router);
// intialise server
app.listen(properties.PORT, (req, res) => {
console.log(`Server is running on ${properties.PORT} port.`);
})
每當我發出任何創建或獲取請求時,我都會在 postman 中收到此 CORS 錯誤。如何解決這個問題?
CORS 錯誤:由於 CORS 策略,請求已被阻止
如果有人仍然遇到此問題,Postman 在調用 API 時不提供來源,因此當我們限制 CORS 策略時,會生成一條錯誤消息Error: Not allowed by CORS
。
繞過這個問題的示例代碼是這樣的:
const whitelist = ['https://localhost:3001']
const corsOptions = {
origin: function (origin, callback) {
if(!origin){//for bypassing postman req with no origin
return callback(null, true);
}
if (whitelist.indexOf(origin) !== -1) {
callback(null, true);
} else {
callback(new Error('Not allowed by CORS'))
}
}
}
app.use(cors(corsOptions));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.