【问题标题】:force a page using https c#, got error this web page has a redirect loop使用 https c# 强制页面,出错此网页有重定向循环
【发布时间】: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 否则我不知道该告诉你什么。找到更好的主机?

标签: c# http redirect https


【解决方案1】:

你可以通过这样做直接询问你是否在HTTPS中

if(Request.IsSecureConnection)

我用它来重定向到我在 HTTPS 中的登录:

if(!IsPostBack){
    if(!Request.IsSecureConnection)
      Response.Redirect("https://" & Request.Url.Host & "/Login.aspx")

......
......
....
...
}

【讨论】:

  • 嘿 Luis,我刚刚尝试了你的代码,但仍然给了我同样的错误。
  • 此网页有重定向循环
  • 这对我来说很好,它只会在它不是安全连接时重定向,我不明白你为什么会收到这个错误..
  • 我知道,这毫无意义,它让我发疯。该页面将重定向到 https//:XXXX/login.aspx,并且仍然显示“此网页有重定向循环”。不过还是谢谢你的帮助。
  • @user2055026 也许这将有助于消除您的困惑。 i.imgur.com/gud66xg.png
猜你喜欢
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 2014-09-22
相关资源
最近更新 更多