我有一个谷歌应用程序应用程序请求从另一个服务器使用urllib2帖子的页面。我最近在另一台运行Apache2的服务器上启用了gzip压缩,Appengine页面请求开始因为key-error而失败,这表明“content-length”不在报头中。
在Appengine的请求中,我没有显式地声明gzip是一种可接受的编码,但Appengine可能会添加这个头文件。Googling没有发现任何明确的迹象表明Appengine的urlfetch隐含地添加了一个头来接受gzip编码。
如果我没记错的话,Apache2在压缩响应时会省略content-length报头,但这不会影响来自同一服务器的非压缩响应。
有没有人知道发生了什么,为什么要省略content-length报头?
发布于 2009-10-23 21:57:09
根据这个线程:http://groups.google.com/group/google-appengine-java/browse_thread/thread/5c5f2a7e2d2beadc?pli=1)在Appengine Java新闻组上,谷歌通常会在urlfetch请求上设置'Accept-Encoding: gzip‘头,然后在将数据交给脚本之前对输入进行解压缩(ungzips)。
所以很明显,Appengine在发送到互联网的请求中隐式地添加了一个accept-encoding: gzip头,并对响应进行解压缩,但不会将内容长度插入到解压缩后的数据大小的头中。因此,如果外部服务器将提供gzipped格式的响应,则Appengine脚本的最终结果(在上述Appengine的所有预处理和后处理行为之后)是丢失content-length头部。
https://stackoverflow.com/questions/1590844
复制相似问题