Ssl DNN重定向到https
我们在Windows 2003x64标准中有一个自托管DNN 6.01.03站点 我们已经允许它使用SSL,但是我们想设置它,以便通过HTTP的用户被重定向到HTTPs 有办法吗?似乎在IIS7中我们可以使用IIS重写URL模块,但这是IIS6Ssl DNN重定向到https,ssl,dotnetnuke,Ssl,Dotnetnuke,我们在Windows 2003x64标准中有一个自托管DNN 6.01.03站点 我们已经允许它使用SSL,但是我们想设置它,以便通过HTTP的用户被重定向到HTTPs 有办法吗?似乎在IIS7中我们可以使用IIS重写URL模块,但这是IIS6 请告知。谢谢 最快的方法是在DNN中将站点设置为“强制SSL” 我注意到,当使用来自IFinity.com.au的UrlMaster这样的工具时,行为会更好 设置重定向页面,并在那里指出403.4错误。重定向页面将是唯一不实施SSL的url 1.创建重定
请告知。谢谢 最快的方法是在DNN中将站点设置为“强制SSL”
我注意到,当使用来自IFinity.com.au的UrlMaster这样的工具时,行为会更好 设置重定向页面,并在那里指出403.4错误。重定向页面将是唯一不实施SSL的url 1.创建重定向页面 您可以在这里使用几乎任何可用的web技术 示例:
- (需要javascript)
<%@ Page Language="C#" %>
<!DOCTYPE html>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!Request.IsSecureConnection)
{
string query = Request.ServerVariables["QUERY_STRING"];
query = query.Replace("http:", "https:");
query = query.Replace("403;", "");
query = query.Replace(":80", "");
Response.Redirect(query);
}
}
</script>
<html>
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
Redirecting...
</div>
</form>
</body>
</html>
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!Request.issecurereconnection)
{
string query=Request.ServerVariables[“query_string”];
query=query.Replace(“http:,“https:”);
query=query.Replace(“403;”,“”);
query=query.Replace(“:80”,”);
重定向(查询);
}
}
重定向。。。
2.检查重定向页面上是否未强制SSL
3.指向重定向页面url的第403.4点错误
另见:
您可以在
Global.asax
中设置重定向,以强制重定向托管域上的所有页面请求。这将比任何DNN设置具有更高的优先级
<script RunAt="server">
protected void Application_BeginRequest(object sender, EventArgs e)
{
// ENABLE SSL REDIRECTS
if (!HttpContext.Current.Request.IsSecureConnection)
{
Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] + HttpContext.Current.Request.RawUrl);
}
}
</script>
受保护的无效应用程序\u BeginRequest(对象发送方,事件参数e)
{
//启用SSL重定向
if(!HttpContext.Current.Request.IsSecureConnection)
{
重定向(“https://”+Request.ServerVariables[“HTTP_HOST”]+HttpContext.Current.Request.RawUrl);
}
}
或者,如果您使用的是自定义标头或负载平衡器
<script RunAt="server">
protected void Application_BeginRequest(object sender, EventArgs e)
{
// ENABLE SSL REDIRECTS
if (!string.Equals(Request.Headers["X-Forwarded-Proto"], "https", StringComparison.InvariantCultureIgnoreCase))
{
Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] + HttpContext.Current.Request.RawUrl);
}
}
</script>
受保护的无效应用程序\u BeginRequest(对象发送方,事件参数e)
{
//启用SSL重定向
if(!string.Equals(Request.Headers[“X-Forwarded-Proto”],“https”,StringComparison.InvariantCultureIgnoreCase))
{
重定向(“https://”+Request.ServerVariables[“HTTP_HOST”]+HttpContext.Current.Request.RawUrl);
}
}
您是指“站点设置”、“高级设置”部分中的“SSL强制”设置吗?该设置的描述为“设置此选项时,未标记为安全的页面将无法通过SSL(HTTPS)访问”。这不是我想要的行为(我测试了它,它的工作原理如描述所示)。Jose-Mitchel在这里是正确的,这是处理http->https转换的公认方式。您需要将设置更改为“强制SSL”,但还必须将所有页面标记为“安全”。这是页面中的一个设置,但是如果希望所有页面都是安全的,您应该能够通过Sql更改所有页面的设置。+1用于说明。我也要试试这个。然而,目前重定向403.4的解决方案对我来说更好,因为将本地请求保存在HTTP中更方便(我可以通过JavaScript解决方案来实现这一点)UPDATE dbo.PortalSettings SET SettingValue='False',其中PortalID=0,SettingName='SSLEnforced'或SettingName='SSLEnabled'
注意:我尝试了aspx示例,但没有成功。要使其正常工作,您似乎无法重定向到URL(因为请求发生了变化,所以当.aspx处理它时,它会将http://{mysite}/redirect.aspx转换为https://{mysite}/redirect.aspx(这不是我想要的,我想要转到最初请求的URL)。使用you Post,我使用了javascript示例,效果非常好。请注意,在IIS中设置自定义错误时,您应该使用“Message Type”=“File”。我使用经典ASP版本作为模板重写了.aspx示例。经过测试,它现在的工作方式与此相同。