4
votes

I have two AppEngine modules, a default module running Python and "java" module running Java. I'm accessing the Java module from the default module using urlfetch. According to the AppEngine docs (cloud.google.com/appengine/docs/java/appidentity), I can verify in the Java module that the request originates from a module in the same app by checking the X-Appengine-Inbound-Appid header.

However, this header is not being set (in a production deployment). I use urlfetch in the Python module as follows:

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)

Note that I'm using the notation:

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

rather than the notation:

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

which for some reason results in a 404 response.

In the Java module I'm running a servlet filter which looks at all the request headers as follows:

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

AppEngine does set some headers, e.g. X-AppEngine-Country. But the X-Appengine-Inbound-Appid header is not set.

Why am I'm not seeing the documented behaviour? Any suggestions would be much appreciated.

1

1 Answers

0
votes

Have a look at what I've been answered on Google groups, which led to an issue opened on the public issue tracker.

As suggested in the answer I received you can follow, for any update, the issue over there.