IE7 игнорирует селектор атрибутов CSS только на страницах, приходящих с рабочего сервера

На моем сайте IE7, похоже, игнорирует определенные селекторы CSS-атрибутов. Странно то, что это происходит только тогда, когда страница поступает с производственного сервера. Если у меня есть точно такой же код на моем личном сервере или сохранен на моем жестком диске, он работает нормально. Вот пример, который вызывает проблему:



IE display test







Поскольку отображение кнопок установлено на "блок", они должны быть расположены вертикально. Но только когда страница обслуживается с моего производственного сервера, они располагаются горизонтально. Когда я использую панель инструментов разработчика для проверки стиля, я не вижу свойства "display", как обычно. Единственное, что я могу придумать, что может быть причиной этого, это URL страницы или заголовки ответа, приходящие с сервера. Я могу выяснить это, экспериментируя, но это будет неудобно и займет много времени, поэтому прежде чем я это сделаю, я хотел бы спросить: Почему это происходит и что можно с этим сделать?

EDIT: Я придумал Fiddle. На этом сайте все выглядит нормально.

EDIT 2: Вот заголовки ответов, приходящие с производственного сервера:

HTTP/1.1 200 OK
Сервер: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en-US
Content-Length: 291
Date: Wed, 18 Jan 2012 21:32:48 GMT

EDIT 3: Вот заголовки ответов с моего личного сервера:

HTTP/1.1 200 OK
Дата: Wed, 18 Jan 2012 21:37:30 GMT
Сервер: Apache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 176
Keep-Alive: timeout=2, max=100
Соединение: Keep-Alive
Content-Type: text/html;charset=utf-8

Производственный сервер не применяет сжатие gzip, потому что он делает это только для файлов определенного размера. Если я добавляю некоторые вещи, чтобы сделать файл достаточно большим, он использует gzip, и я все еще вижу проблему в IE7, так что это, похоже, не имеет ничего общего с gzip.

Я попробовал настроить свой личный сервер на отправку заголовка "Content-Language", как на рабочем сервере, и это не вызвало проблемы.

Я не знаю, имеют ли другие заголовки какое-либо отношение к этому. Я могу попробовать протестировать их, но это будет довольно сложно, так что это может занять некоторое время.

EDIT 4: Я не замечаю этой проблемы в IE8, даже если я включаю режим совместимости. Я тестирую это на Windows XP, если это имеет значение.

EDIT 5: Я поместил charset в заголовок Content-Type с моего личного сервера. Это не вызвало проблему.

EDIT 6: Вот несколько скриншотов: Выполнено с производственного сервера: IE7 test on production server

Загружено с моего личного сервера: IE7 test on personal server

Загружено непосредственно с моего жесткого диска: IE7 test directly from my hard drive

EDIT 7: Я, наконец, получил подсказку о том, что вызывает это! Я попробовал ввести javascript:alert(document.compatMode) в адресную строку. Личная и прямая страницы показали CSS1Compat, но производственная страница показала BackCompat. Похоже, что браузер находится в режиме quirks только при рендеринге страницы с производственного сервера. Пока что я понятия не имею, почему это происходит и что с этим делать.

EDIT 8: Я упустил одну деталь: Скриншот на самом деле сделан из моей среды разработки, которая эмулирует производственный сервер, но работает на моем собственном компьютере. Это сделало бы ответ BoltClock правдоподобным, если бы не тот факт, что та же проблема проявляется на нашем реальном рабочем сервере, который находится на IP-адресе, соответствующем 173. . .*. Почему я вижу проблему на этом сервере? Это тоже частный IP-адрес? Возможно, будет полезно узнать, что реальный рабочий сервер использует https.

EDIT 9: Поскольку срок действия вознаграждения истек, проблема перестала проявляться на рабочем сервере, но она все еще проявляется в моей среде разработки (10.1.10.34). Я понятия не имею, почему. Думаю, я буду винить в этом космические лучи, если не найду других доказательств.

20
задан BoltClock 8 May 2012 в 19:18
поделиться