使用 POST 的 Google App Engine Cron 请求

Posted

技术标签:

【中文标题】使用 POST 的 Google App Engine Cron 请求【英文标题】:Google App Engine Cron Requests Using POST 【发布时间】:2013-08-15 13:52:24 【问题描述】:

是否可以使用method=post 通过 Google App Engine 向 URL 发出 cron 请求。我在文档中找不到任何允许使用除 get 以外的其他方法的内容。

https://developers.google.com/appengine/docs/python/config/cron#Python_app_yaml_Cron_support_in_the_development_server

【问题讨论】:

那会有什么价值。如果您想要更多/复杂的信息将其存储在数据存储中并在运行 cron 时获取它。 @TimHoffman 因为 GET 请求可以被浏览器以及用户和服务器之间的基础设施缓存。 GET 请求也可能被浏览器无意中调用(即,前瞻预缓存)。 GET 不适合这种类型的事情。 Google 应该使用 POST 或至少使其成为一种选择。 【参考方案1】:

简单的答案是否定的。从docs 中明确指出,cron 作业使用 HTTP GET。最好的办法是将您的方法更改为 GET 并限制对 app.yaml 中 url 的直接访问。 像这样:

handlers:
 - url: /report/weekly
   script: reports.app
   login: admin

【讨论】:

【参考方案2】:

这是不可能的。这些请求将包含一个您可以检查的标头“X-AppEngine-Cron”,如果您想防止从浏览器意外运行,这可能会有所帮助。

【讨论】:

以上是关于使用 POST 的 Google App Engine Cron 请求的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine Java - 对于 POST 参数,request.getParameter 在部署时返回 null,但在本地工作

Google App Engine Java HTTP Post 图像从 API 方法到 Servlet

Google App Engine 上的传出 HTTP 请求位置

仅使用 Google App Engine、webapp2 和 Python 创建 API?

从 Google App Engine 中的数据存储区获取实体以在 iOS 应用中使用

AppEnginePlatformWarning:urllib3 在 Google App Engine 沙箱上使用 URLFetch 而不是套接字