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

403.4 не перенаправляет в IE7

У меня есть защищенная папка, для которой требуется SSL. Я настроил его в IIS (6), чтобы требовать SSL. Мы не хотим, чтобы посетители встречались с ошибкой «соединение должно быть безопасным», поэтому я изменил страницу с ошибкой 403.4, добавив в нее следующее:

<script type="text/javascript">
function redirectToHttps()    {

    var httpURL = window.location.hostname+window.location.pathname;

    var httpsURL = "https://" + httpURL ;

    window.location = httpsURL ;

}
redirectToHttps();
</script>

И это решение отлично работает с любым браузером, кроме IE7. В любом другом браузере, если вы введете http://www.mysite.com/securedfolder он автоматически перенаправит вас на https://www.mysite.com/securedfolder без сообщения или чего-то еще (предполагаемое действие). Но ТОЛЬКО в Internet Explorer 7 откроется страница с надписью

The website declined to show this webpage
Most Likely Causes:
This website requires you to log in

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

Мне интересно, кто-нибудь еще видел это раньше?

Я предполагаю, что функция IE «Дружественное сообщение об ошибке» заменяет вашу страницу с ошибкой той, которую, по его мнению, легче понять людям. В соответствии с эта статья в kb, «дружественное сообщение об ошибке» не используется, если ответ сервера достаточно велик, и предлагает заполнить настраиваемую страницу ошибки пробелами до тех пор, пока он не станет больше.

Я никогда не испытывал этого раньше, но мне интересно, почему вы используете для этого javascript? Когда-либо пробовал с

<meta http-equiv="REFRESH" content="0;url=http://www.the-domain-you-want-to-redirect-to.com"> ?

Я справился с этой проблемой легко, поскольку я использую ASP.NET. Вы создаете абстрактный класс страницы или HttpModule (все веб-приложение), которые проверяют, (!Request.IsSecure) ... перенаправить с 301 на защищенную страницу.

На стороне сервера замечательно то, что он будет работать без javascript. Я почти уверен, что вы можете сделать то же самое на любом языке (Java, PHP, ruby, даже C ++, если вы придерживаетесь старой школы).