【发布时间】:2011-05-10 21:31:15
【问题描述】:
我正在开发一个可以在网络服务器上启用或不启用 https 的 CMS。我希望能够检测是否启用了 https,以便我可以采取相应的行动(例如,向管理员显示一些与 https 相关的选项,并重定向到 https 以进行管理员登录)。
我不是在寻找 Request.IsSecureConnection,因为它只会告诉我当前请求是否通过 https。我想要一些东西来告诉我 IIS 中站点的当前绑定是否包括与当前请求所在域相同的 https 绑定。因此,例如,即使当前请求是针对http://example.com/ 的,因此不安全,我想知道https://example.com/ 是否可以工作,以便我可以(例如)将用户重定向到它,如果他们以管理员身份登录。
不过,我没有运气在 System.Web.Configuration 中寻找任何可以告诉我当前站点绑定的信息。
如果启用了 https,我目前的解决方法是要求管理员在 web.config 中设置 appSetting,但如果我可以使其自动运行,我更愿意。必须设置相同的东西两次——一次在 IIS 中,一次在 web.config 中——令人困惑。
【问题讨论】:
-
我很困惑为什么检查请求还不够?
-
因为,如果站点在
http://example.com/和https://example.com/上运行,那么当有人访问http://example.com/时,这不是安全连接。但我仍然需要知道https://example.com/会 工作,以便我可以(例如)在用户以管理员身份登录时将其重定向到它。 -
我开发了一个具有类似要求的应用程序。我们决定只保留配置设置,以便客户可以选择是否使用 HTTPS。检测是否支持 SSL 不起作用有几个原因:一,我们必须支持各种版本的 IIS;第二,我们有一个客户的网站支持 SSL,他们已经对其进行了配置,但无论出于何种原因,他们都不想在我们的应用程序中使用 SSL,即使在登录时也是如此。(不记得为什么,这就像四年前一样。 ..) 无论如何,我的观点是让他们在安装时配置它可能更容易/更好。
标签: asp.net iis ssl https system.web