我有一个自托管的 Ghost 博客正在运行。我想检查是否存在自定义标头,例如X-Den-Was-Here
.
我要实现的是条件检查,其中:
- 如果标题存在- 加载博客内容。
- 如果标头不存在- 返回401 Unauthorized。
在 Ghost infra 中执行此检查的最合适位置是哪里?
我有一个自托管的 Ghost 博客正在运行。我想检查是否存在自定义标头,例如X-Den-Was-Here
.
我要实现的是条件检查,其中:
在 Ghost infra 中执行此检查的最合适位置是哪里?
根据Express 4.x API Reference,您可以使用 访问标头req.get(headerName)
,并检查它是否返回undefined
或其他内容,例如:
app.get('/', function(req, res, next) {
if(req.get(headerName) == undefined){
//do not load modules
}else{
loadModules();
}
});
事实证明,对此的解决方案(我愿意让某人验证它并告诉我我为它选择了错误的位置)是修改缓存层以验证入站请求标头。
为此,您需要\core\server\middleware\cache-control.js
. 在cacheControlHeaders
函数中,您可以在调用之前添加以下代码段next()
:
if (req.headers["den-was-here"] != "1")
{
return res.sendStatus(401);
}
这将有效地为任何不携带标头的请求抛出401 Unauthorized响应。