如何在express js中处理cors?它适用于 HTTP 模块,但在 Express js 中未定义标头中的起源

问题描述 投票:0回答:1

我正在使用 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");
});

javascript node.js express cors cross-origin-resource-policy
1个回答
0
投票

如果您不想阻止 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'))
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.