Ghost 博客 - 检查请求 Headers

Ghost Blog - Check Request Headers

我有一个 self-hosted 幽灵博客 运行。我想检查是否存在自定义 header,例如 X-Den-Was-Here.

我要实现的是条件检查,其中:

  1. 如果 header 存在 - 加载博客内容。
  2. 如果 header 不存在 - return 一个 401 Unauthorized.

在 Ghost infra 中执行此检查的最合适位置是哪里?

根据 Express 4.x API Reference,您可以使用 req.get(headerName) 访问 headers,并检查它是否 returns undefined 或其他内容,例如:

app.get('/', function(req, res, next) {
  if(req.get(headerName) == undefined){
    //do not load modules
  }else{
    loadModules();
  }
});

事实证明,这个问题的解决方案(我愿意让某人验证它并告诉我我为它选择了错误的位置)是修改缓存层以验证入站请求header.

为此,您需要 \core\server\middleware\cache-control.js。在 cacheControlHeaders 函数中,您只需在 next() 调用之前添加下面的代码段:

if (req.headers["den-was-here"] != "1")
{
    return res.sendStatus(401);
}

这将有效地为任何不携带 header.

的请求抛出 401 Unauthorized 响应