我有一个在 Grails 服务器上运行的常规代码。我如何为 HSTS 配置它?我查看了 Groovy 规范,没有发现任何有用的东西。
这就是我想要实现的目标
当我查看来自服务器的任何 HTTP 响应时。我必须看到如下所示的标题
Strict-Transport-Security: max-age=31536000
Run Code Online (Sandbox Code Playgroud)
您能提出一些建议吗?
我建议实现自定义 servlet 过滤器,如下所示:
@Priority(Integer.MIN_VALUE)
public class HstsFilter extends OncePerRequestFilter {
public HstsFilter() {
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
filterChain.doFilter(request, response);
response.addHeader("Strict-Transport-Security", "max-age=31536000");
}
}
Run Code Online (Sandbox Code Playgroud)
那么你需要将其注册在resources.groovy:
beans = {
hstsFilter(HstsFilter)
}
Run Code Online (Sandbox Code Playgroud)
该代码在 Grails 3.1.4 上进行了测试