未设置 HSTS

HSTS not being set

提问人:cj- 提问时间:4/2/2020 更新时间:4/14/2020 访问量:1192

问:

我正在尝试使用 Asp.Net Core 3 设置 Http Strict-Transport-Security 标头。我让它在开发环境中运行良好,无论谁在发布到 Heroku(使用 https://elements.heroku.com/buildpacks/jincod/dotnetcore-buildpack)时,标头都不会显示(在任何页面上,通过 http 和 https)。

            if (env.IsDevelopment()) {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
                app.UseBrowserLink();
                app.UseHsts(hsts => hsts.IncludeSubdomains().MaxAge(hours: 1));
            } else {
                app.UseExceptionHandler("/About/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts(hsts => hsts.IncludeSubdomains().MaxAge(days: 366));
            }

任何帮助都非常感谢!

我试过了什么

我尝试使用配置中内置的 UseHSTS 方法并将 AddHSTS 添加到 ConfigureServices。然后我尝试使用NWebsec包的UseHSTS(在配置中)和相同的选项,但没有成功。

ASP.NET 核心 Heroku

评论


答:

-1赞 jincod 4/14/2020 #1

以下是 https https://github.com/jincod/AspNetCoreDemoApp/blob/master/src/AspNetCoreDemoApp/Startup.cs 的示例配置

配置服务:

services.AddHttpsRedirection(options => { options.HttpsPort = 443; })
...
services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor |
                                ForwardedHeaders.XForwardedProto;
    options.KnownNetworks.Clear();
    options.KnownProxies.Clear();
});

配置:

app.UseForwardedHeaders();
...
app.UseHttpsRedirection();

更多信息 https://devcenter.heroku.com/articles/http-routing#routinghttps://github.com/aspnet/Announcements/issues/301