2

我想从一个网址:

  • 仅由 google cron 服务调用

  • 不被用户在网络浏览器中调用

谷歌文档上的内容不起作用:当 cron 服务调用 servlet 时,它也给我一个 403 错误 - 禁止访问...

并且没有关于灵活环境的 app.yaml 文件的安全相关信息。

我做了两个观察:

  • Google 声明“Google App Engine 从 IP 地址 0.1.0.1 发出 Cron 请求”。但是我得到了另一个 IP 地址来启动 cron 作业:

另一个 IP 地址

  • 从这个 IP 地址,HTTP 标头实际上包含 X-Appengine-Cron(值为 true)

你有什么想法 ?

4

1 回答 1

3

引用的文档片段在文件部分中提到基于login: admin配置的保护方法是不正确的 - 该部分适用于(非 java)标准环境,而不是柔性环境之一。因此,您可能希望删除此类未记录的配置,以确保它不会产生一些意外/不希望的负面影响。handlersapp.yamlhandlersapp.yaml

只检查X-Appengine-Cron应该就足够了:它只能由您的应用程序的 cron 服务设置。从保护 cron 的 URL

来自 Cron 服务的请求也将包含一个 HTTP 标头:

X-Appengine-Cron: true

X-Appengine-Cron 标头由 Google App Engine 内部设置。如果您的请求处理程序找到此标头,它可以相信该请求是 cron 请求。如果标头存在于对您的应用程序的外部用户请求中,则会将其剥离,但来自已登录应用程序管理员的请求除外,他们可以为测试目的设置标头。

至于为什么对 cron 请求的确切响应是 403 - 您应该显示您的处理程序代码,该代码(很可能)是负责构建回复的代码。

于 2017-03-13T18:18:00.010 回答