如何在后面的代码中设置页面加载事件以重定向到具有 https 前缀的网址?我需要它来处理也附加了查询字符串的网址。
构建一个直接进入 https 页面的链接是一回事,但我不希望用户能够手动将其更改为 http 页面。
此外,我不想使用 javascript 来执行此操作,因为它可能会被关闭。
我猜是正则表达式?
最佳答案
我们使用特殊属性 ForceSslAttribute
标记 SSL 必需页面。然后我们有一个 HttpModule 来拉取当前页面的类并检查它的属性。
如果页面上存在该属性,它将获取传递的确切 URL,并将协议(protocol)从 http
更改为 https
,然后调用重定向。
可能有更简单的方法,但这就是我们的做法。
属性:
[AttributeUsage(AttributeTargets.Class, AllowMultiple=false, Inherited=true)]
public sealed class ForceSslAttribute : Attribute
{
// Marker Attribute
}
页面示例(代码隐藏):
[ForceSsl]
public partial class User_Login : Page
{
//...
}
您可以像这样确定页面的类型:
HttpContext.Current.CurrentHandler.GetType()
所有Page
都实现了IHttpHandler
,当您访问页面时,它就会起作用。
这个方法最酷的部分是你可以标记任何 IHttpHandler 并且它也会强制重定向:)
关于c# - 逐页强制使用 SSL (https),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681331/