2011-06-08 2 views
2

У меня есть проблема с именем входа в систему, зависящая от IE, возникающая на демо-сайте, который я создаю для своей компании.Internet Explorer FORCES a 304 при ajaxing проверке состояния входа

В каждом обозревателе Internet Explorer браузер (7-9), эта проблема возникает, в то время как она работает как чавканье во всех остальных:

после succsesfully входа в систему, пользователь перенаправляется на целевую страницу, которая выстреливает запрос статуса входа в систему.

Если этот запрос статуса входа возвращается с чем-либо, кроме «1», страница перенаправляется обратно на страницу входа в систему.

Если вы следите за трафиком в Инструментах разработчика, вы увидите, что запрос на эту конкретную проверку состояния приводит к ошибке 304 Не изменен (НИКОГДА не должно произойти), и тело запроса появляется ПУСТОЙ. (Он всегда возвращает 0 или 1) ...

HARD refresh (CTRL-F5) страницы с этой проверкой, STILL приводит к 304 из браузера.

Отслеживание этих 304 с помощью скрипача указывает на то, что для этого URL-адреса для входа нет даже запроса по сети, BROWSER ITSELF принимает 304 и не может отправить запрос.

при посещении URL-адреса напрямую, ответ ВСЕГДА 200 с соответствующими 0 или 1 ожидаемыми, но когда ajax'ed, он чаще всего не является 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 различных вкусов.

ответ

4

Попробуйте добавить произвольный параметр querystring в URL-адрес вашего запроса статуса. например:

'/your/url?breakcache='+Math.random() 
+0

интересное решение, попробуйте это. – Rimer

+0

@Rimer: Итак? Как это получилось? –

+0

Работал, спасибо! – Rimer

Смежные вопросы