【发布时间】:2011-01-06 19:44:44
【问题描述】:
我正在使用 Request.IsSecureConnection 检查 SSL 并在适当的地方进行重定向。在 Rackspace 的云上运行我的 asp.net 网站时,服务器在 SSL 集群后面运行,因此 IsSecureConnection 将始终返回 false。检查 url 是否包含“https://”、始终为 false、检查端口等也是如此。因此网站陷入了大重定向循环。
是否有其他方法可以检查 SSL 并在适当的地方进行重定向?有人真的在 Rackspace 的云上做过这个吗?
Public Class SecurityAwarePage
Inherits Page
Private _requireSSL As Boolean = False
Public Property RequireSSL() As Boolean
Get
Return _requireSSL
End Get
Set(ByVal value As Boolean)
_requireSSL = value
End Set
End Property
Private ReadOnly Property IsSecure() As Boolean
Get
Return Request.IsSecureConnection
End Get
End Property
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)
PushSSL()
End Sub
Private Sub PushSSL()
Const SECURE As String = "https://"
Const UNSECURE As String = "http://"
If RequireSSL AndAlso Not IsSecure Then
Response.Redirect(Request.Url.ToString.Replace(UNSECURE, SECURE))
ElseIf Not RequireSSL AndAlso IsSecure Then
Response.Redirect(Request.Url.ToString.Replace(SECURE, UNSECURE))
End If
End Sub
End Class
【问题讨论】:
-
并不是说它与这个问题有任何关系,但我很欣赏使用 const 来处理像“http”和“https”这样的简单字符串。