未设置X-Appengine-Inbound-Appid标头

时间:2014-11-06 14:46:19

标签: google-app-engine

我有两个AppEngine模块,一个运行Python的默认模块和#34; java"运行Java的模块。我使用urlfetch从默认模块访问Java模块。根据AppEngine文档(cloud.google.com/appengine/docs/java/appidentity),我可以通过检查X-Appengine-Inbound-Appid标头在Java模块中验证请求是否来自同一应用程序中的模块

但是,未设置此标头(在生产部署中)。我在Python模块中使用urlfetch,如下所示:

hostname = modules.get_hostname(module="java")
hostname = hostname.replace('.', '-dot-', 2)
url = "http://%s/%s" % (hostname, "_ah/api/...")
result = urlfetch.fetch(url=url, follow_redirects=False, method=urlfetch.GET)

请注意,我使用的是符号:

<version>-dot-<module>-dot-<app>.appspot.com

而不是符号:

<version>.<module>.<app>.appspot.com

由于某种原因导致404响应。

在Java模块中,我运行了一个servlet过滤器,它按如下方式查看所有请求标头:

Enumeration<String> headerNames = httpRequest.getHeaderNames();
while (headerNames.hasMoreElements()) {
    String headerName = headerNames.nextElement();
    String headerValue = httpRequest.getHeader(headerName);
    mLog.info("Header: " + headerName + " = " + headerValue);
}   

AppEngine设置了一些标题,例如X-AppEngine上的国家。但是没有设置X-Appengine-Inbound-Appid标头。

为什么我没有看到记录在案的行为?任何建议都会非常感激。

1 个答案:

答案 0 :(得分:0)

查看我在Google groups上已经回答的问题,这导致了issue opened on the public issue tracker

正如我收到的答案中所建议的那样,对于任何更新,您可以关注那里的问题。