【问题标题】:.NET Core - RequireHttpsAttribute causes ERR_TOO_MANY_REDIRECTS on Ubuntu with Apache2.NET Core - RequireHttpsAttribute 在带有 Apache2 的 Ubuntu 上导致 ERR_TOO_MANY_REDIRECTS
【发布时间】:2018-10-06 07:11:56
【问题描述】:

使用 .NET Core 2.0 如果我按照官方文档强制执行 HTTPS,则网站无法加载并出现错误 ERR_TOO_MANY_REDIRECTS。

重现步骤:

  1. 创建新的 .NET Razor 应用程序: dotnet new razor -o aspnetcoreapp
  2. 从此处详述的文档中添加两个代码片段: https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.0
  3. 部署到在 Ubuntu 17.10 上运行的 Apache2(未在旧版本上测试),其中 conf 使用以下代码传递与 Kestrel 服务器的连接:

ProxyPreserveHost On ProxyPass / http://127.0.0.1:5001/ ProxyPassReverse / http://127.0.0.1:5001/

如果删除第 2 步中的代码,则网站可以通过 HTTP 或 HTTPS 正常工作(但显然不会重定向),但如果添加此代码,则网站无法通过 HTTP 或 HTTPS 加载 ERR_TOO_MANY_REDIRECTS。 .NET Core 2.1 似乎改变了方法,但尚未发布。

【问题讨论】:

    标签: c# redirect asp.net-core https


    【解决方案1】:

    您已将传递设置为http,而不是https。此处的 Apache 作为反向代理运行,因此它只是将请求转发到您的直通服务器,它始终会根据您在此处的配置通过 http 执行此操作。然后,由于 ASP.NET Core 应用程序配置为需要 HTTPS,因此它会重定向,从而导致新请求到达 Apache,然后通过 http 转发 再次

    长短,需要直通https,而不是http。或者,您可以从 ASP.NET Core 应用程序中删除仅 HTTPS 的要求,而是在 Apache 中强制执行 HTTPS。

    【讨论】:

    • 这个答案对于解决this problem 非常有帮助,这已经让我发疯了将近两个星期。我仍然不明白为什么我的问题只在有限的场景(即蜂窝移动)中表现出来,但是在 IIS 上而不是在 ASP.NET Core 上的 HTTPS 解决方案就像一个魅力。顺便说一句,如果您对我的蜂窝移动场景中发生的事情有解释,欢迎您在上面的链接中发布答案。
    【解决方案2】:

    检查你的逻辑,应该有地方导致循环重定向。如果你使用反向代理,检查HttpContext是否正确获取Https状态

    【讨论】:

      猜你喜欢
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      相关资源
      最近更新 更多