【发布时间】:2013-02-11 23:17:48
【问题描述】:
我这几天一直在尝试将 http 重定向到 https,任何帮助将不胜感激!我在共享托管环境中托管我的网站,我不允许在 IIS 中更改任何内容。
这是c#登录页面中的代码
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Url.ToString().IndexOf("http://") != -1)
{
string redirectUrl = Request.Url.ToString().Replace("http://", "https://");
//Response.Write(redirectUrl);
Response.Redirect(redirectUrl);
}
}
我得到的错误是“这个网页有一个重定向循环”。我也尝试在 web.config 文件中进行重定向,但出现了同样的错误。有没有强制使用 https 的页面?
【问题讨论】:
-
如果您使用负载均衡器类型的服务,我相信您需要确保
X-Forwarded-For标头已通过。 -
嗨 asawyer,有什么例子可以传递 X-Forwarded-For 标头吗?
-
你不能接触 IIS 但托管环境怎么样。它是负载均衡器吗?你没有提供任何细节。问题是浏览器使用 HTTPS 与负载平衡服务器对话,但负载平衡器在内部通过 HTTP 端口 80 与 IIS 对话。您可能完全没问题,但应用程序无法知道或强制执行这一点。解决方案是将余额软件配置为使用
x-forwarded-proto(不是 -for,抱歉)标头传递原始请求的 http/https 值,然后使用Request.Headers集合在您的应用程序中检查它。 -
sorry asawyer,我在 123 reg 共享主机上托管网站,我唯一能控制的是使用 ftp 上传文件。无论如何我可以在 c# 或 web.config 文件中做到这一点吗?非常感谢
-
发送电子邮件并要求他们开始使用
x-forwarded-proto否则我不知道该告诉你什么。找到更好的主机?