我正在使用 Express.js 框架并尝试处理 CORS,但是
req.headers.origin
正在返回 undefined
。我的 corsOptions
中有一个允许来源的白名单,并且我正在检查标题中的 origin
。为什么 origin
标头返回为 undefined
,我该如何修复它?
在这里,我正在尝试。
const app = express();
const corsOptions = {
origin: function (origin, callback) {
// origin is undefined
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback("Not allowed by CORS")
}
},
credentials: true, //access-control-allow-credentials:true
optionSuccessStatus: 200,
exposedHeaders: ['Content-Disposition']
}
process.env.NODE_ENV === "production" && app.use(helmet());
/**
* Middleware
*/
app.use(cors(corsOptions));
app.use(express.json());
app.use(express.urlencoded({
extended: true
}));
app.use(cookieParser());
app.disable('x-powered-by');
// Api
app.get("/test", (req, res) => {
// req.headers.origin is undefined
// req.header.get("origin") is undefined
res.send("Response success");
});
如果您不想阻止 REST 工具或服务器到服务器的请求,请在 origin 函数中添加 !origin 检查,如下所示:
var corsOptions = {
origin: function (origin, callback) {
if (whitelist.indexOf(origin) !== -1 || !origin) {
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
}
}