在开发环境中,我遇到的问题是我的浏览器(Yandex)将OPTIONS
请求重定向(307)到URL的https版本。由于我们没有设置SSL,因此请求失败并显示错误Response for preflight is invalid (redirect)
。
答案 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标头。
当浏览器缓存了以前的版本时,跳过重置步骤并关闭标题将无效 - 至少在浏览器的缓存版本在最长时间之后到期之前。