【问题标题】:How to get the raw POST data in Spring Boot controller如何在 Spring Boot 控制器中获取原始 POST 数据
【发布时间】:2019-08-15 14:19:28
【问题描述】:

我有一个普通的控制器类 extends AbstractController,我通过创建一个新的 SimpleUrlHandlerMapping bean 将其插入到 Spring 的处理程序映射机制中。

在我的课堂上,我需要读取原始 POST 数据,即使 Content-Type 是 application/x-www-form-urlencoded。这在 Servlet 规范中有些棘手,因为为了做到这一点,您需要调用 request.getInputStream()request.getReader() 您访问任何 request.getParameter*()方法。否则,后者将消耗输入流,将不再可用。

在我的课堂上,我没有调用任何 getParameter*() 方法,但是当 Content-Type 为 application/x-www-form-urlencoded 时,我仍然看到一个空的请求正文。这意味着 Spring 在处理对我的类的控制之前调用了 getParameter*() 方法之一。

哪个班级正在这样做,我该如何预防?


(过分热心的编辑请注意:这个问题是 Spring Boot 特有的。它不是其他“原始 POST 数据”问题的重复。)

【问题讨论】:

    标签: spring-boot post urlencode


    【解决方案1】:

    找到了。

    我只需要禁用 HiddenHttpMethodFilter,无论如何我都不会使用它:

    spring.mvc.hiddenmethod.filter.enabled=false
    

    【讨论】:

    • 您可能希望将您正在使用 Spring Boot 的事实添加到您的问题中,因为它非常相关。
    • 我遇到了类似的问题,它是由 spring-mvc 5 的内置请求日志引起的,请参阅 stackoverflow.com/a/59264125/3656774
    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 2018-04-08
    • 2016-08-22
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 2016-06-06
    相关资源
    最近更新 更多