У меня есть проблема запроса статуса ajax для IE, возникающая на демонстрационном сайте, который я создаю для своей компании.
В каждом браузере Internet Explorer (7-9) эта проблема возникает,хотя он работает как чемпион во ВСЕХ других:
после успешного входа в систему, пользователь перенаправляется на целевую страницу, которая запускает запрос статуса входа в систему.
Если этот запрос статуса входа в систему приходитобратно с чем-либо, кроме «1», страница перенаправляется обратно на страницу входа в систему.
Если вы отслеживаете трафик в инструментах разработчика, вы видите, что запрос для этой конкретной проверки состояния приводит к 304 Не изменено(НИКОГДА не должно происходить), и тело запроса появляется ПУСТО.(Он всегда возвращает 0 или 1) ...
ЖЕСТКОЕ обновление (CTRL-F5) страницы с этой проверкой, все равно приводит к 304 из браузера.
Отслеживание этих 304 с помощью fiddler показывает, что по этому URL-адресу состояния входа в сеть даже нет запроса на то, что БРАУЗЕР САМ принимает 304 и не может отправить запрос.
при прямом посещении URL-адреса ответ ВСЕГДА равен 200 с ожидаемым соответствующим 0 или 1, но когда ajax'ed, он чаще всего равен 304 и никогда не отправляет по сети даже для подтверждения304 с сервера.
Очистка истории браузера, похоже, не влияет на то, меняет ли 304 304 на 200.
вдвойне странно, что каждые 10 или около того попыток это действительно работает, изапрос возвращается 200 с реальным ответом, но чаще всего он возвращается 304 без ответа, и значение не равно 1 с кэшированным значением (даже не уверен, что оно равно?!)
Я изменил ответ на этот запрос, чтобы следующие заголовки были сгенерированы php:
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Expires: -1');
При посещении URL-адреса непосредственно в IE эти заголовки присутствуют, а когда появляется 304, их нет.
Это как если бы IE активно игнорировал этот конкретный запрос ...
Любые идеи?
Опять же, это работает в КАЖДОМ другом браузере, буквально, но в IE разных ароматов.