как обойти заголовок "Content-encoding gzip deflate", отправленный Chrome? - PullRequest
5 голосов
/ 05 ноября 2010

У нас есть простая HTML-форма для входа на веб-сервер нашего встроенного устройства.Веб-сервер имеет пользовательскую кодировку из-за серьезных ограничений памяти.Независимо от этих ограничений, нам нравится Chrome, и мы хотели бы его поддерживать.

Все браузеры отправляют HTTP-запрос в нашу форму входа, содержащую ожидаемую строку «username = myname & password = mypass», но не Chrome.Вместо этого мы получаем от Chrome запрос «gzip deflate для кодирования контента».Кстати, под «всеми браузерами» я имею в виду, что это было протестировано на работу в Internet Explorer версий 9 бета, 8, 7, 6;Firefox версии 4 бета, 3, 2;Опера 10, 9;Safari 5, 4, 3;и SeaMonkey 2.

Ссылаясь на раздел "14.2 Принять кодировку" http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html на w3.org, мы попытались вернуть код HTTP 406, чтобы указать, что этот сервер не поддерживает эту кодировку в надеждечто Chrome попытается снова и отправит ожидаемые строки стандартным способом.Код 406, возвращаемый веб-сервером, четко отображается в окне Chrome «Inspect Element», но, похоже, он обрабатывается Chrome как код ошибки, и на веб-сервер дальнейшие запросы не отправляются."Ошибка входа."Мы также попробовали HTTP-коды возврата 405 и 200, тот же результат.

Есть ли способ обойти это поведение либо с помощью клиентского JavaScript, который не позволит Chrome отправлять запрос «Content-encoding gzip deflate»,или с ответом на стороне сервера, который хорошо объяснит Chrome, что мы не делаем gzip, просто отправьте его нам обычным способом?

Мы попытались отправить сообщение на форум по устранению неполадок Google Chrome без ответа.

Любая помощь будет принята с благодарностью!

С уважением, Берт

Ответы [ 3 ]

2 голосов
/ 24 октября 2011

Вы ищите в неправильном разделе код ошибки: в разделе 14.11 RFC 2616 указано, что вы отправляете 415 (неподдерживаемый тип носителя), если не можете справиться с Content-Encoding.

0 голосов
/ 06 ноября 2010

Я немного проверил это с помощью простого скрипта Python, который печатал на стандартный вывод.Я думал, что у меня та же проблема, но потом я понял, что просто забыл сбросить стандартный вывод.Кажется, что Chrome всегда отправляет запрос до конца заголовков перед отправкой содержимого запроса, и вам нужно использовать второй вызов recv для получения данных POST.Напротив, весь запрос Firefox возвращается в одном вызове recv.

0 голосов
/ 05 ноября 2010

Похоже, что при использовании chrome для отправки сообщения на сервер в первый раз chrome использует gzip-кодировку.Довольно странно

Простой выход - просто указать свое имя пользователя / пароль в качестве параметров GET, и при отправке ответа, если вы не отправляете кодировку содержимого gzip, chrome должен начать использовать сообщения без gzip с этой точки.на.Надеюсь, что это работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...