在ASP.Net Core 5中,我们可以通过配置中间件来避免自动重定向到HTTPS。
代码示例:
在Startup.cs文件中,将以下代码添加到Configure方法中。
app.Use(async (context, next) =>
{
if (context.Request.IsHttps || !string.Equals(context.Request.Headers["X-Forwarded-Proto"], "https", StringComparison.OrdinalIgnoreCase))
{
await next();
}
else
{
var httpsUrl = "https://" + context.Request.Host + context.Request.Path;
context.Response.Redirect(httpsUrl, permanent: true);
}
});
这将检查当前请求是否已经使用HTTPS,如果是,则继续执行,否则将进行HTTPS重定向。 请注意,此示例中使用了X-Forwarded-Proto标头来检查HTTPS状态。如果您的应用程序位于代理服务器后面,请确保将X-Forwarded-Proto标头正确配置到服务器/代理服务器中。
此外,还可以在项目中的appsettings.json文件中配置ASP.Net Core应用程序的Kestrel服务器,以在其提供服务时自动启用HTTPS。 您可以像这样进行配置:
{
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "https://localhost:5001",
"Certificate": {
"Path": "path/to/cert.pfx",
"Password": "password"
}
}
}
}
}
在这种情况下,您不需要中间件进行HTTPS重定向,因为服务器将在启动时使用HTTPS协议。