是否有将 HSTS header 添加到嵌入式码头 Servlet 的标准方法?

Is there a standard way of addig HSTS header to embedded jetty Servlet?

我有一个扩展 HttpServlet 的自定义 Servlet 实现。是否有标准方法将 HSTS header 添加到响应中?

我找到的唯一方法是添加

response.addHeader("Strict-Transport-Security", "max-age=31536000; includeSubDomains")

但是我需要对所有的方法做同样的事情。有没有更简单的方法?

感谢您的帮助!

编辑:我使用嵌入式码头服务器

Edit2:显然 HeaderFilter class 可用于执行此操作,并将过滤器添加到上下文中

你有几个选择。

  • 一个传统的 Servlet Filter
    注意 DispatcherType 行为,如果响应被重置,或者你处于非 DispatcherType.REQUEST 的流程中(例如:异步、错误、包含、转发),你想做什么等)
  • 覆盖HttpServlet.service()方法添加header然后委托给正常的服务流程。
  • 创建一个新的 RewriteHandler Rule 来为您做到这一点。
  • 创建一个新的 Jetty Handler 添加 header 然后通过处理程序链进入您的 Web 应用程序(在处理程序链的稍后位置)
  • 创建一个 HttpConfiguration.Customizer 实现,以便在解析请求后以及在将其分派到您的 Web 应用程序之前为您执行此操作。
  • 创建一个 HttpChannel.Listener,将 header 添加到 onResponseBegin() 事件的响应中。