AppEngine nodejs:如何保护cron URL免受公共访问?

时间:2018-12-03 23:53:35

标签: google-app-engine google-cloud-platform

https://cloud.google.com/appengine/docs/standard/python/config/cron

  

cron处理程序只是app.yaml中定义的普通处理程序。您可以   防止用户访问计划任务使用的URL   限制对管理员帐户的访问。

但是,此选项在nodejs中不可用。建议使用nodejs运行时保护CRON URL免受公共访问的推荐方法是什么?

1 个答案:

答案 0 :(得分:4)

检查您的请求是否包含

X-Appengine-Cron: true
  

X-Appengine-Cron标头由Google App Engine在内部设置。如果   您的请求处理程序找到此标头,它可以信任该请求   是cron请求。如果标头存在于外部用户中   对您的应用程序的请求,除了已记录的请求   在应用程序的管理员中,他们可以设置   标头用于测试。

https://cloud.google.com/appengine/docs/flexible/nodejs/scheduling-jobs-with-cron-yaml#validating_cron_requests

例如,这可以完成像这样:

app.get('/my-cron-trigger', async (req, res, next) => {
  // ensure that request comes from cron
  if (req.header('x-appengine-cron') !== 'true') {
    next();
    return;
  }

  // [your function code]
}