Java 如何在GAE flexible env上保护google cron服务任务?

Java 如何在GAE flexible env上保护google cron服务任务?,java,security,google-app-engine,cron,app-engine-flexible,Java,Security,Google App Engine,Cron,App Engine Flexible,我想从一个url: 仅由google cron服务调用 不被web浏览器中的用户调用 不起作用:当cron服务调用servlet时,它还会给我一个403错误-禁止访问 并且没有关于flexible env的app.yaml文件的安全相关信息 我有两个观察: 谷歌声明“谷歌应用引擎从IP地址0.1.0.1发出Cron请求”。但我得到了另一个启动cron作业的IP地址: 从这个IP地址,HTTP头实际上包含X-Appengine-Cron(值为true) 你有什么想法吗 在app.ya

我想从一个url:

  • 仅由google cron服务调用

  • 不被web浏览器中的用户调用

不起作用:当cron服务调用servlet时,它还会给我一个403错误-禁止访问

并且没有关于flexible env的app.yaml文件的安全相关信息

我有两个观察:

  • 谷歌声明“谷歌应用引擎从IP地址0.1.0.1发出Cron请求”。但我得到了另一个启动cron作业的IP地址:

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

你有什么想法吗

app.yaml
文件的
handlers
部分中提到基于
login:admin
config的安全方法的引用文档片段不正确-
handlers
部分适用于,而不是。因此,您可能希望删除这种未记录的配置,只是为了确保它不会产生一些意外/不希望的负面影响

仅检查
X-Appengine-Cron
就足够了:它只能由应用程序的Cron服务设置。发件人:

来自Cron服务的请求还将包含HTTP头:

X-Appengine-Cron: true
X-Appengine-Cron头由Google App Engine在内部设置。如果 您的请求处理程序找到此标头,它可以信任该请求 是一个cron请求。如果标头存在于外部用户中 请求您的应用程序时,它将被剥离,但来自已登录应用程序的请求除外 在应用程序的管理员中,允许谁设置 标题用于测试目的


至于为什么cron请求的响应是403,你应该显示你的处理程序代码,它(很可能)是负责生成回复的处理程序代码。

“谷歌文档上的什么不起作用。”确切地说,什么不起作用?您声明已正确发送
X-Appengine-Cron
头。由你来处理
0.1.0.1
10.1.0.1
看起来谷歌有输入错误,或者你的堆栈中的某个东西不会接受无效的IP。感谢回复!:)。当cron服务调用servlet时,它还会给我一个
403错误-禁止访问
。。。作为
X-Appengine-Cron=True
,它必须按照文档中的说明访问servlet,对吗?403就在您这边。确保您没有混淆字符串
'True'
'True'
和布尔值
True
。我没有混淆,因为添加此HTTP头的不是我(X-Appengine-Cron=True)。在Google端,GAP在从cron服务调用servlet时添加了这个头。我没有找到答案。谷歌添加了标题。由你来处理。当谷歌点击网址时,你的服务会以403作为回应。它的功能是什么?非常感谢您的回复,Dan!问题是,我根本不知道如何处理appengine发送的http请求。我需要检查X-Appengine-Cron在我的servlet或其他处理程序脚本中是否设置为true?如果是,下一步是什么?我应该在响应中输入什么来告诉我的servlet在检查头是否实际设置为true后运行?如果不是,处理程序脚本是什么样子的?假设servlet是处理请求的工具(我不是100%确定java应用程序是如何工作的,我使用的是python)。然后是的,标题检查在那里完成。servlet已经在运行,在头部检查之后,只执行必须执行的内容。