Spring boot:不要发送HSTS头

时间:2018-03-09 20:38:03

标签: spring-boot xmlhttprequest hsts

在开发环境中,我遇到的问题是我的浏览器(Yandex)将OPTIONS请求重定向(307)到URL的https版本。由于我们没有设置SSL,因此请求失败并显示错误Response for preflight is invalid (redirect)

2 个答案:

答案 0 :(得分:1)

我通过配置HSTS标头解决了这个问题,如下所示:

@Configuration
@EnableWebSecurity
public class SecurityConfigurer extends WebSecurityConfigurerAdapter {
    ...
    @Override
    protected void configure(HttpSecurity http) throws Exception {
    ...
          http.headers().httpStrictTransportSecurity()
              .maxAgeInSeconds(0)
              .includeSubDomains(true);
    }
}

禁用HSTS对我不起作用。

答案 1 :(得分:1)

如果您没有设置HTTPS,则永远不应读取HSTS值 - 浏览器必须忽略通过未加密的HTTP连接发送的HSTS。

如果您曾经拥有过HTTPS但现在已经不再使用(或者您的某些域/页面上有HTTPS),那么您的浏览器可能已经缓存了HSTS设置,无论浏览器上次设置了什么max-age值阅读标题。您需要在浏览器中清除它。如何做到这一点因浏览器而异,但在所有浏览器中使用的一种更简单的方法是发布一个新的HSTS标头,其最大年龄为0,就像你已经完成一样,然后通过HTTPS访问一个页面(不是未加密的) HTTP)。这显然要求你有一个你说你没有的HTTPS设置?在所有浏览器都获得所有受影响域的新设置后,您可以完全停止发布该HSTS标头。

当浏览器缓存了以前的版本时,跳过重置步骤并关闭标题将无效 - 至少在浏览器的缓存版本在最长时间之后到期之前。