c# - 逐页强制使用 SSL (https)

标签 c# asp.net

如何在后面的代码中设置页面加载事件以重定向到具有 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/

相关文章:

c# - 如何在 n 层架构中解决此 NHibernate 查询?

c# - 如何解决 'Only Parameterless constructors and initializers...' 错误

asp.net - 服务器端检测页面显示在 IFrame 中

asp.net - VS 2010 中缺少 App_Code 文件夹

asp.net - Azure - 将数据从 IoT 中心发送到 Web 应用程序后端

c# - 将 .ASCX 项目添加到站点地图

c# - 在何处实现缓存 - 类库或 Windows 服务

c# - TCP 客户端通过 C# 中的多线程

c# - 对于 Windows 应用程序,c# 比 delphi/realbasic 有什么优势

c# - 禁用页面上的多个按钮控件