我想创建一个相对链接来切换当前协议http to https。我工作的最后一个地方在服务器上设置了一些东西,以便您可以实现这一点,但我不太记得它,而且我从来不知道它是如何工作的。
这样做的理由是,我不需要在需要在生产和开发环境之间移动的文件中硬编码服务器名称。
有没有办法让它在 IIS 6.0 中工作?
Edit:
我正在使用.NET,但我创建的“链接”不会动态生成。如果您确实想要详细信息,我在 Umbraco 中使用重定向宏,需要传入 URL。
下面是 VB.NET 中的一个简单解决方案:
Imports System.Web.HttpContext
Public Shared Sub SetSSL(Optional ByVal bEnable As Boolean = False)
If bEnable Then
If Not Current.Request.IsSecureConnection Then
Dim strHTTPS As String = "https://www.mysite.com"
Current.Response.Clear()
Current.Response.Status = "301 Moved Permanently"
Current.Response.AddHeader("Location", strHTTPS & Current.Request.RawUrl)
Current.Response.End()
End If
Else
If Current.Request.IsSecureConnection Then
Dim strHTTP As String = "http://www.mysite.com"
Current.Response.Clear()
Current.Response.Status = "301 Moved Permanently"
Current.Response.AddHeader("Location", strHTTP & Current.Request.RawUrl)
Current.Response.End()
End If
End If
End Sub
Usage:
'Enable SSL
SetSSL(True)
'Disable SSL
SetSSL(False)
您可以将其添加到每个页面的 Page_Load 中。或者您可以像我一样,创建一个要在 global.asax 中保护的文件夹或页面列表,并在 Application_BeginRequest 方法中相应地设置 SSL。这将适用于相对链接,并且页面的 HTTP 或 HTTPS 状态将始终是您在代码中指定的状态。
我在几个网站上都有此代码。但举个例子,如果你去https://www.techinsurance.com https://www.techinsurance.com您会注意到它会自动重定向到 http,因为主页不需要受到保护。如果您尝试访问需要保护的页面,例如http://www.techinsurance.com/quote/login.aspx http://www.techinsurance.com/quote/login.aspx
您可能会注意到我正在使用 301(永久)重定向。这里的附带好处是搜索引擎将根据 301 重定向代码更新其索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)