我试图理解一种我以前从未见过的奇怪行为。
我有一个网站。端口 80 上的 HTTP 主机名绑定已配置。该站点可通过 HTTP 访问。
当我添加 HTTPS 绑定(尝试过 SNI 和没有)时,我可以通过 HTTPS 访问该站点。但是,当我尝试通过 HTTP 访问该站点时,我得到一个 307 重定向到 HTTPS。
我没有添加 IIS 重定向规则或 URL 重写规则。另外,如果我将 HTTPS 端口更改为另一个端口,例如。44300,来自 HTTP(端口 80)的重定向更新为重定向到配置的非标准端口。
值得一提的是,它是一个 .NET Core 站点。应用程序是否有机会检查 IIS 绑定,然后在此处进行正确的重定向?
谢谢你所有的聪明主意!
编辑:
我找到了一个参考:Microsoft.AspNetCore.HttpsPolicy
在一个 json 文件中。我没有源代码。
此外,如果我清除 web-root 并添加一个静态 index.htm 文件,则不会发生神奇的重定向。因此,对于 ASP.NET Core 应用程序,它似乎从 IIS 配置中读取端口号,这听起来对我来说是有线的。
.NET Core 包含一个默认的 HTTP 到 HTTPS 重定向,当它检测到满足条件时可能会意外激活它。因此,如果这不是您想要的,请让开发人员完全禁用它(
UseHttpsRedirection
从代码中删除)。参考