Ruby on Rails: не закрывает HTTP-ответ (когда отображаются «азиатские символы» - PullRequest
2 голосов
/ 03 ноября 2011

все

У меня есть эта ноющая проблема, которую я не могу решить. Так что, пожалуйста, помогите мне !!!!

Итак, у меня есть страница, которая отображает часть. Страница корректно отображается в течение нескольких секунд, однако Chrome все еще получает (показывая значок «загрузки») еще примерно 30 секунд и сообщает об ошибке (не удалось загрузить ресурс) в Chrome Inspector. не правильно закрыта. Если бы я вынул строку в части, которая отображает азиатские символы, она бы работала нормально - это означало бы, что она отобразит страницу и правильно остановится.

Эта проблема усугубляется, если частичное значение отображается как часть вызова AJAX через jQuery. Тогда он даже не будет обработан, потому что не получит правильное окончание ответа.

Буду признателен за вашу помощь.

Спасибо.

Вот заголовок HTTP:

Метод запроса: GET Code Status: 200 OK Запросить источник заголовка Accept: Текст / HTML, приложение / XHTML + XML, приложение / XML; д = 0,9, / ; д = 0,8 Accept-Charset: ISO-8859-1, UTF-8; д = 0,7, *; д = 0,3 Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US, en; q = 0,8 Подключение: keep-alive Файл cookie: XXXXX Хост: localhost: 3000 Реферер: https://localhost:3000/home Пользователь-агент: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit / 535.2 (KHTML, как Gecko) Chrome / 15.0.874.106 Safari / 535.2 Источник заголовка ответа источник Cache-Control: max-age = 0, private, must-revalidate Соединение: Keep-Alive Content-Length: 55118 Content-Type: text / html; charset = utf-8 Дата: среда, 02 ноября 2011 23:07:52 GMT Этаж: "77d774b3b119012c5fabbd5c625a98a8" P3p: CP = "CAO PSA OUR" Сервер: WEBrick / 1.3.1 (Ruby / 1.9.2 / 2011-07-09) OpenSSL / 0.9.8r X-Runtime: 1.070787 X-Ua-совместимый: IE = Edge

UPDATE:

Я только что установил Firefox / Firebug. Они дают больше информации, чем Chrome. Какой приятный сюрприз! Firebug подтвердил мою теорию о том, что каким-то образом длина контента испортилась. Таким образом, если визуализированный фрагмент содержит несколько азиатских символов, длина содержимого в заголовке ответа и фактический размер тела ответа различаются. Если нет азиатских символов, они совпадают. Кто-нибудь видел эту проблему раньше?

1 Ответ

0 голосов
/ 03 ноября 2011

OK!Мы наконец поняли это!YEAAAAH !!!

Это было вызвано неспособностью WEBrick правильно обрабатывать HTTP.По сути, WEBrick не будет правильно отображать страницы, что приведет к несоответствию между Content-Length в заголовке ответа и фактическим размером тела.Когда это происходит, браузер будет ждать завершения запроса и через 30 секунд выдает ошибку (обычно не удалось загрузить ошибку ресурсов в Chrome).

Итак, если вы хотите использовать HTTP на своем компьютере (localhost)), убедитесь, что вы используете Thin в качестве сервера и nginx в качестве обратного прокси-сервера.Хотя это звучит сложно, это не так.По сути, Thin будет обслуживать ваши страницы так же, как это сделал бы WEBrick.Если поступает HTTPS-запрос, скажем, через порт 443 или любой другой порт, для которого вы настроили, nginx позаботится о проверке запроса и перенаправит его в Thin, который затем обрабатывает рендеринг и т. Д.

Надеюсь, это сообщениепомог бы кому-нибудь ..

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