我有一个需要 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,并且安全设置无效,即使我将其设置为最低级别,也会收到相同的错误。
我想知道,以前还有人见过这个吗?
答案1
我猜 IE 的“友好错误消息”功能正在用它认为更容易让人理解的页面替换你的错误页面。根据这篇知识库文章,当服务器响应足够大时,不会使用“友好的错误消息”,并建议用空格填充自定义错误页面,直到它足够大。
答案2
我以前从未遇到过这种情况,但我想知道你为什么使用 javascript 来做到这一点?曾经尝试过
<meta http-equiv="REFRESH" content="0;url=http://www.the-domain-you-want-to-redirect-to.com"> ?
由于我使用 ASP.NET,因此处理这个问题的方法很简单。您可以创建一个抽象页面类或 HttpModule(整个 Web 应用程序),检查是否(!Request.IsSecure)
... 使用 301 重定向到安全页面。
在服务器端执行此操作的好处是它无需 JavaScript 即可工作。我确信您可以使用任何语言(Java、PHP、ruby 甚至 c++,如果您是老派的话)执行相同的操作。