Header "Strict-Transport-Security" 两次响应 Swisscom CloudFoundry 应用程序

Header "Strict-Transport-Security" twice in response with Swisscom CloudFoundry application

将 Swisscom CloudFoundry 解决方案与 Spring 启动应用程序一起使用时,两个 Strict-Transport-Security header 会添加到 HTTPS 响应中。我调查了这个问题,发现 CloudFoundry 解决方案添加了几个 header。 Spring 默认情况下,引导已经添加了 Strict-Transport-Security header(在安全站点上),这导致两个不同的 HSTS headers。

我想在我的应用程序中配置我的应用程序的 headers。有没有办法禁用这种自动 header 添加 Swisscom CloudFoundry 解决方案?

如果不是,是否有办法告诉 Swisscom Cloud 覆盖现有的 Strict-Transport-Security header 而不是将其附加到 header 的列表中?

来自 Spring 启动应用程序的 HTTP 响应,部署了 Swisscom Cloud,然后包含以下两个 header:

Strict-Transport-Security:max-age=31536000 ; includeSubDomains
Strict-Transport-Security:max-age=15768000; includeSubDomains

感谢您的报告。我们目前只插入(不替换)HSTS headers,因为我们不知道某些框架默认添加它。我们会考虑始终覆盖 header,因为重复的 header 可能没有意义,我们设置的默认值适用于大多数用例。

目前:您可以在 Spring 启动时禁用 HSTS 设置吗? 根据 Spring boot docs,您应该可以使用此代码段禁用它:

@EnableWebSecurity
public class WebSecurityConfig extends
        WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            // ...
            .headers()
                .frameOptions().sameOrigin()
                .httpStrictTransportSecurity().disable();
    }
}

更新:我们将很快更改此行为:如果应用尚未设置,Appcloud 只会设置 header。因此,我们将选择权留给开发人员是否以及如何实现 HSTS,但它会提供一个默认值。

更新 2:新行为已到位。