如何在 Spring 引导应用程序的嵌入式应用程序中禁用 HTTP TRACE



我的目标是为我的 Spring 启动应用程序禁用 HTTP 跟踪方法,该应用程序使用嵌入式 undertow。

首选有效的yaml更改,如果没有,代码更改也可以。理想情况下,最终结果应该是 4xx HTTP 响应代码,并且响应中没有 cookie 值。[spring.mvc.dispatch-trace-request:false 给出 200 OK,所以这对我没有好处。

在这一点上打破我的头,不应该这么难!

要在 Spring 引导中禁用对跟踪的默认处理,您可以覆盖 DispatcherServlet 上 doTrace 处理程序的行为。

将此组件添加到您的 Spring 配置中应该可以解决问题。(示例在 Kotlin 中,但您可以轻松地转换为 Java(

@Component("dispatcherServlet")
class CustomDispatcherServlet : DispatcherServlet() {
    /**
     * We want to disable the default trace behaviour of returning the response
     * so we override the trace handling and process it as normal.
     * If the application doesn't support TRACE then a HTTP 405 response will be generated.
     */
    override fun doTrace(request: HttpServletRequest, response: HttpServletResponse) {
        processRequest(request, response)
    }
}

这将为 TRACE 请求生成此响应

{
    "timestamp": "2019-01-22T10:03:46.906+0000",
    "status": 405,
    "error": "Method Not Allowed",
    "message": "TRACE method is not allowed",
    "path": "/"
}

Jacob 答案的 Java 版本

@Component("dispatcherServlet")
public class CustomDispatcherServlet extends DispatcherServlet {
    @Override
     public void doTrace(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }
}

相关内容

  • 没有找到相关文章

最新更新