我有一个需要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>
而这个解决scheme对于每个浏览器都很好,但IE7。 在任何其他浏览器上,如果您inputhttp://www.mysite.com/securedfolder ,则会自动将您redirect到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
这当然是我们不想要的。 我已经validation了javascript是启用的,并且安全设置没有效果,即使当我将它们设置到最低级别时,我也会得到相同的错误。
我想知道,有没有其他人看过这个?
我的猜测是,IE的“友好的错误消息”function正在取代你认为更容易让人理解的错误页面。 根据这篇kb文章 ,当服务器响应足够大时,不会使用“友好的错误消息”,并且build议使用空格填充您的自定义错误页面直到它为止。
我从来没有经历过,但是,我不知道为什么你使用JavaScript来做到这一点? 曾经尝试过
<meta http-equiv="REFRESH" content="0;url=http://www.the-domain-you-want-to-redirect-to.com"> ?
我处理这个问题的方式很简单,因为我使用ASP.NET。 你做一个抽象的页面类或HttpModule(整个networking应用程序),检查是否(!Request.IsSecure) …与301redirect到安全页面。
这样做服务器端的好处是,它将工作没有JavaScript。 我敢肯定,你可以用任何语言(Java,PHP,ruby,甚至是c ++,如果你是老同学)来做同样的事情。