Назад | Перейти на главную страницу

Проблема HTTP 302 в IE7

Возможно, это самая странная вещь, которую я видел. Когда я выполняю HTTP GET из Firefox, Chrome или I8, Apache вернет ответ 200 (ok). Но когда я отправляю тот же запрос из IE8 в режиме совместимости, сервер возвращает 302 (временное перенаправление) и отправляет сервер в бесконечный цикл перенаправления.

У меня есть журналы сервера, чтобы доказать это. Обычно я получаю такой ответ:

127.0.0.1 - - [09/Nov/2010:13:02:25 -0600] "GET /tabby/members/login HTTP/1.1" 200 5712 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"

Но с IE8 в режиме совместимости я получаю такой ответ:

127.0.0.1 - - [09/Nov/2010:13:03:17 -0600] "GET /tabby/members/login/ HTTP/1.1" 302 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; .NET4.0C; InfoPath.3)"

IE будет повторять запрос снова и снова, бесконечно. Это происходит как на моей локальной машине разработки (Windows), так и на моем тестовом сервере (Linux).

Я подозреваю одну из двух причин. Во-первых, это правила перезаписи в моем файле .htaccess. Я также использую PHP для установки заголовка местоположения в некоторых моих скриптах, который должен генерировать 302.

Вот мой файл .htaccess:

# Turn on URL rewriting 
RewriteEngine On 

# Installation directory 
RewriteBase /tabby/

# Protect application files from being viewed 
RewriteRule ^(application) - [F,L] 

# Allow any other files or directories that exist to be displayed directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# Rewrite all other URLs to index.php/ 
RewriteRule .* index.php/$0 [PT,L] 

Есть ли какие-нибудь известные проблемы с тем, как IE7 обрабатывает 302 ответа? Почему Apache отправляет 200 для одних браузеров и 302 для других?

Что /tabby/members/login - может быть программа, которая обнюхивание браузера а есть баг?