Аццкая Мозилла или HTTP-заголовок Content-Length

Jun 09, 2008 19:49

Загоняли меня сегодня утром!

Мину эту я себе заложил своими же руками. Наш программный продукт состоит из клиентской и серверной части, соединённых тем, что продвинутые ламеры называют AJAX, хотя ни асинхронности, ни XML там нету, а есть синхронно запрашиваемый JASON, ну да это детали, а механизм, в общем, тот же. И вот недавно в процессе отладки нам пришлось указать серверу отдавать HTTP-ответ обязательно с заголовком Content-Length, указывающим размер ответа. Зачем - это отдельная история, вкратце - дело в капризах сертифицированного министерством ПО. Вот шеф мне и говорит - а пропиши-ка этот заголовок и запросу.

Тут меня интуиция (это такая анимешная девочка в сетчатых чулочках, обычно сидит у меня на левом плече и от нечего делать теребит за ухо) толк ногой. Плохо, говорит, он это придумал, не к добру это. Чувствую - права она,- но аргументированно возразить не могу, посему с тяжёлой совестью выполняю указание.

Проходят дни, эта строчка кода перекочёвывает из версии в версию, я о ней благополучно забываю, а меж тем она попадает в рабочий проект и ко мне прибегают женщины из соседней лаборатории. Беда, говорят, ошибка вылезает!

Иду, смотрю. Действительно, вылезает ошибка. Клиентская часть недовольна тем, что от серверной получает вместо данных кукиш, то бишь null. Возвращаюсь к себе, проверяю. Запрос проходит на ура, на экран бойко выскакивают данные. Проверяю на соседней машине, проверяю с машины шефа. Всё работает. Иду опять к взволнованным женщинам, стираю куки, очищаю кэш браузера, проверяю все его настройки, приводя их в соответствие со своими, перезапускаю. Не работает. Впадаю в тягостную задумчивость.

Смотрю логи, кои должна вести серверная часть приложения, и обнаруживаю их отсутствие. Стало быть, или запрос не уходит на сервер (но почему тогда браузер никак не сигнализирует о сбое?), либо уходит и уже там происходит нечто страшное. Ставлю аддон, позволяющий смотреть HTTP-заголовки, убеждаюсь, что запрос на сервер и впрямь не уходит. Вспоминаю о Content-Length, комментирую строчку. Работает!

Собственно, на этом я и остановился. Осталось загадкой, почему на одинаковых операционках одинаковые браузеры с одинаковыми настройками либо пересылали запрос, либо устойчиво отказывались это делать.

web-дизайн, программирование, http, mozilla

Previous post Next post
Up