我有一个使用 Godaddy 的网络主机,并且我在我的域中带来了一个 ssl 证书。有没有简单的方法让 login.aspx 页面和 register.aspx 页面转到 https?我不想明确地说重定向(“https://domain/login.aspx)。感谢您的帮助。
问问题
530 次
2 回答
1
最简单的方法是使用以下代码修改这些页面(如果不在本地运行,则重定向到 https,并且不是安全连接):
if (!Request.IsLocal && !Request.IsSecureConnection)
{
string redirectUrl = Request.Url.ToString().Replace("http:", "https:");
Response.Redirect(redirectUrl);
}
于 2012-06-19T20:43:18.770 回答
0
通常最简单的解决方案是最好的,但如果你想疯了......
您可以编写一个 HTTP 模块来确保将特定页面列表重定向到 SSL。
public class EnsureSslModule : IHttpModule
{
private static readonly string[] _pagesToEnsure = new[] { "login.aspx", "register.aspx" };
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.BeginRequest += OnBeginRequest;
}
public void OnBeginRequest(object sender, EventArgs e)
{
var application = (HttpApplication)sender;
var context = application.Context;
var url = context.Request.RawUrl;
if (!context.Request.IsSecureConnection
&& _pagesToEnsure.Any(page => url.IndexOf(page, StringComparison.InvariantCultureIgnoreCase) > -1))
{
var builder = new UriBuilder(url);
builder.Scheme = Uri.UriSchemeHttps;
context.Response.Redirect(builder.Uri
.GetComponents(UriComponents.AbsoluteUri & ~UriComponents.Port,
UriFormat.UriEscaped), true);
}
}
}
于 2012-06-19T20:58:56.157 回答