就像问题说的那样,如果我在我的网站上请求这样的页面
http://somename.something.here/Dada.aspx
像这样
我更喜欢 (a) 不重定向本地连接(以简化 VS 下的开发),并且 (b) 使用 UriBuilder 而不是 string.Replace,因为它更准确一些。
if (!Request.IsLocal && !Request.IsSecureConnection) {
var ub = new UriBuilder(Request.Url);
ub.Scheme = Uri.UriSchemeHttps;
ub.Port = -1; // use default port for scheme
Response.Redirect(ub.Uri.AbsoluteUri, true);
return;
}
您标记了 ASP.NET,所以我假设您使用 IIS。在您网站的 Web Root 中创建一个文件,将其命名为 SSL_Redirect.htm 或类似名称。把这个Javascript放在那里:
<Script language="JavaScript">
<!-- begin hide
function goElseWhere()
{
var oldURL = window.location.hostname + window.location.pathname;
var newURL = "https://" + oldURL;
query = '' + window.location;
position = query.indexOf('?');
if (position > -1)
{
query = query.substring(position + 1);
newURL = newURL + "?" + query;
}
window.location = newURL;
}
goElseWhere();
// end hide -->
</script>
现在,转到您网站的属性。转到客户错误选项卡,查找 403.4 错误并进行编辑。将其更改为使用 /SSL_Redirect.htm 的 URL(或您命名的任何名称)。现在,在 IIS Admin 中,找到该文件 SSL_Redirect.htm,右键单击,转到属性。转到文件安全并取消选中该特定文件的需要 SSL。
你完成了。
我认为这很简单
Response.Redirect("https://somename.something.here/Dada.aspx");
我记得不久前处理过同样的问题。我想确保某些页面通过 https,而其余页面则使用 http。我还想确保一旦访问者离开安全页面,访问不需要安全的页面,他们就会返回 http。为此,我探索了两种选择:
第一个选项是我可以使用免费的.NET URLRewriter项目来重写配置文件中列出的特定页面:
# HTTP REQUIRED PAGES
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !(/login\.aspx|/securepage\.aspx).*$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)$ http://%3$1 [R=301,L]
# HTTPS REQUIRED PAGES
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} (/login\.aspx|/securepage\.aspx).*$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)$ https://%3$1 [R=301,L]
使用此配置,我可以确保只有两个页面是安全的,而其余页面将是不安全的。我用这个选项得到了很好的结果。
第二个选项是在我找到一个专门用于处理这个问题的完整解决方案之后出现的。这家公司是 SanibelLogic,他们有一个名为SSLRedirect的产品。这个基于 HTTPModule 的解决方案正是我所需要的。它确实要花一点钱,但如果你想要一些简单的实现和管理,这可能符合要求。如果您想编辑有关它的任何内容,他们甚至会提供源代码...
我使用了这两个选项好几个月,但最终还是使用了 SSLRedirect 产品,因为它很简单。
我希望这有帮助...
我只是遇到了同样的问题,但我发现使用纯 IIS 配置的不同解决方案。
有两种方法:
(1) 简单的方法是将您的MyWebApp重命名为MyWebAppSSL例如。为后者启用SSL 。然后在您的 IIS 中创建一个新的空文件夹,类似于旧的MyWebApp。单击 MyWebApp 的属性,然后在“目录”下选择“重定向到 URL ”并放在http://MyServer/MyWebAppSSL
那里。建议为它启用“永久重定向”。顺便说一下,您不需要单击MyWebApp的“创建 Web 应用程序”按钮,因为它不是 Web 应用程序,而只是重定向。
(2) 简单的方法当然有缺点,从现在开始,您的应用程序将以新名称运行(本例中以-SSL结尾)。如果我们需要保持它以相同的旧名称运行,也可以通过仅配置 IIS 来实现,但我们必须采取一些不同的方式。我们将不得不在运行在不同端口上的 IIS 上设置一个新的 Web 空间。我发现了这个很好的描述:How to Auto-Redirect to a SSL-secured Site in IIS。
将重定向标头 (302) 发送到浏览器。
例子:
Response.Redirect("WebForm2.aspx")