【发布时间】:2020-08-19 00:07:44
【问题描述】:
我使用 CORS 包创建了 CORS 中间件。这个中间件将在每次调用之前被调用。这是我的实现。
const corsMiddleware = async (req, callback) => {
const { userid } = req.headers|| req.cookies {};
let whiteList = await getWhiteListDomains(userid)
return callback(null, {
origin: whiteList,
credentials: true,
allowedHeaders: ["userid", "authorization", "content-type"]
});
};
并在路由初始化之前添加了这个中间件
app.use(cors(corsMiddleware));
app.options("*", cors(corsMiddleware));
app.get("/user", (req, res, next)=>{
// code
})
在浏览器中我尝试将 API 调用为
axios({ method: "get", url: "http://localhost:3000/user", headers: {userId:"1234"} });
在服务器上调试时我看到了
access-control-request-headers:"userid"
在请求对象的标头中。
我无法读取自定义标题。这可能是因为我试图在 CORS 初始化之前读取自定义标头。但是,我仍然想阅读那个自定义标题。
【问题讨论】:
-
您到底想读取什么请求标头?
-
@sideshowbarker 我在标题中传递了用户 ID。现在我想在 cors 中间件中读取该标题。
-
目前写的问题不清楚,并且缺少任何人都必须回答的细节。您应该更新问题以包含有关您正在测试的硬件的解释。您是否从浏览器中运行的前端 JavaScript 代码发送请求?如果是这样,该代码是什么样的?你检查过浏览器开发工具控制台吗?浏览器在那里记录的确切消息是什么?
-
@sideshowbarker 我已经更新了这个问题。请看这个可以帮助你理解
-
浏览器在 devtools 控制台中记录的确切消息是什么?
标签: javascript node.js express cors