2009-10-19 54 views
4

我有一个Google Appengine应用程序使用urllib2 POSTs从另一个服务器请求页面。我最近在运行Apache2的其他服务器上启用了gzip压缩,并且Appengine页面请求在关键错误上开始失败,表明“content-length”不在标头中。appengine,urlfetch和内容长度标题

我没有明确地声明gzip是Appengine的请求中的一个可接受的编码,但Appengine可能会添加该标头。谷歌搜索没有明确指出Appengine的urlfetch隐式添加头来接受gzip编码。

如果我没有记错,Apache2在响应被压缩时省略了内容长度标题,但不应该影响来自同一服务器的非压缩响应。

有没有人知道发生了什么,为什么内容长度标题被省略?

回答

2

根据这个线索: http://groups.google.com/group/google-appengine-java/browse_thread/thread/5c5f2a7e2d2beadc?pli=1) 上AppEngine上的Java新闻组,谷歌并一般设置“接受编码:gzip”的网址抓取请求头,然后解压缩(ungzips)输入的数据悉数交给前脚本。显然,Appengine在请求出口到互联网时隐式地添加了一个accept-encoding:gzip标头,并对响应进行了解压缩,但不会将内容长度插入解压缩数据大小的标头中。因此,如果外部服务器将提供gzip响应,Appengine脚本的最终结果(经过上述Appengine的所有预处理和后处理行为后)是丢失了内容长度标头。