2009-10-19 6 views
4

У меня есть приложение Google Appengine, запрашивающее страницы с другого сервера с использованием POST-адресов urllib2. Недавно я включил сжатие gzip на другом сервере, на котором запущен Apache2, и запросы страницы Appengine начали сбой при ошибке ключа, указывая, что «длина содержимого» отсутствует в заголовках.appengine, urlfetch и заголовок длины содержимого

Я не объявляю gzip как принятую кодировку в моих запросах из Appengine, но возможно, что Appengine добавляет этот заголовок. В Googling не появилось четкого указания на то, что urlfetch Appengine неявно добавляет заголовок для принятия кодировки gzip.

Apache2, если я правильно помню, пропускает заголовки длины содержимого при сжатии ответа, но это не должно влиять на не сжатые ответы с того же сервера.

Есть ли у кого-нибудь представление о том, что происходит, почему заголовок длины содержимого опущен?

ответ

2

По этой теме: http://groups.google.com/group/google-appengine-java/browse_thread/thread/5c5f2a7e2d2beadc?pli=1) на в телеконференции Appengine Java, Google делает вообще установить «Accept-Encoding: GZIP» заголовок по запросам UrlFetch, а затем распаковывает (ungzips) ввод перед передачей данных в скрипт.

Таким образом, Appengine, по-видимому, добавляет заголовок accept-encoding: gzip неявно на выходе запросов в Интернет и распаковывает ответ, но не вставляет длину содержимого в заголовки для размера распакованных данных. Поэтому, если внешний сервер предоставит gzip-ответы, итоговый результат для сценария Appengine (после всего описанного выше пред-и последующей обработки Appengine) является потерей заголовка длины содержимого.

Смежные вопросы