首页 > 解决方案 > 未设置 HSTS

问题描述

我正在尝试使用 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));
            }

任何帮助是极大的赞赏!

我试过的

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

标签: asp.net-coreheroku

解决方案


这里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


推荐阅读