我在我的API项目中使用Spring Security和Spring Oauth2以及JWT 用于登录Spring oauth 2提供的默认API是/ oauth / token
此API始终在响应中添加“Strict-Transport-Security:max-age = 31536000; includeSubDomains”标头。 但在我的情况下,我不希望这样。我已使用以下源代码删除了HSTS。
@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// ...
.headers()
.httpStrictTransportSecurity().disable();
}
}
使用上面的代码,我定义的API将在标头中删除HSTS。但默认的API / oauth / token仍会在标头中返回HSTS。 有没有办法做到这一点? 请帮忙。
谢谢, 锡
答案 0 :(得分:1)
我刚遇到同样的问题。 我找到的最佳解决方案是编写一个过滤器,以防止其他人一般设置HSTS标头。
@Component
@Order(value = Ordered.HIGHEST_PRECEDENCE)
public class HstsHeaderPreventionFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, new HttpServletResponseWrapper((HttpServletResponse) response) {
public void setHeader(String name, String value) {
if (!name.equalsIgnoreCase("Strict-Transport-Security")) {
super.setHeader(name, value);
}
}
});
}
@Override
public void destroy() {
}
}