.NET Core-RequireHttpsAttribute导致在具有Apache2的Ubuntu

如果我遵循官方文档来执行HTTPS,则使用.NET Core 2.0,该网站无法加载,并显示错误ERR_TOO_MANY_REDIRECTS。

重现步骤:

  1. 创建新的.NET Razor应用程序:dotnet新的razor -o aspnetcoreapp

  2. 从此处详细介绍的文档中添加两个代码片段:https ://docs.microsoft.com/zh-cn/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更改,但尚未发布。


潇湘沐
浏览 156回答 2
2回答

天涯尽头无女友

您已将passthrough设置为http,而不是https。这里的Apache是作为反向代理运行的,因此它只是将请求转发到您的直通服务器,该服务器将始终http根据此处的配置进行转发。然后,由于将ASP.NET Core应用程序配置为需要HTTPS,因此它将重定向,导致新请求命中Apache,然后再次通过转发http。总之,您需要直通https,而不是http。或者,您可以从ASP.NET Core应用程序中删除仅HTTPS要求,而在Apache中强制实施HTTPS。

30秒到达战场

检查您的逻辑,应该有一个引起循环重定向的地方。如果您使用反向代理,请检查HttpContext是否正确获取Https状态
打开App,查看更多内容
随时随地看视频慕课网APP