【问题标题】:AJAX Request Truncated by Spring MVCAJAX 请求被 Spring MVC 截断
【发布时间】:2013-07-07 13:15:40
【问题描述】:

我正在尝试通过 Spring MVC 发送 POST 类型的大型 AJAX 请求。该请求包含表示在网格中选择的行的 ID 的数据。请求看起来像这样,其中 N 约为 30,000:

POST /foo/view? HTTP/1.1
Host: localhost:8443
Connection: keep-alive
Content-Length: 618953
Accept: text/html, */*; q=0.01
Origin: https://localhost:8443
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: https://localhost:8443/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

并且表单数据包含编码selections:

selection=1 selection=2 selection=... selection=n

被映射来处理这个请求的控制器方法注解如下:

@RequestMapping(method = RequestMethod.POST, value = "/foo/view")
public void controllerMethod(User user, @ModelAttribute CustomModelMap inModel, BindingResult result) {
...
}

CustomModelMap 仅包含访问器/修改器,用于将选择映射到集合。

我遇到的问题是,当我点击控制器时,ModelMap 只填充了 9,997 个选择(当请求包含超过 9,997 个选择时,它总是这个数字)。我三次检查了我发送的 AJAX 请求,以确保确实有 30,000 个选择。

我想也许我的网络服务器不喜欢请求标头中的大量数据,但请求总计约 600k,而 Tomcat 似乎默认允许最多 2mb 用于 POST。

还有什么我可以检查的想法吗?

【问题讨论】:

  • 你在做 GET 请求吗?这些对根据您的 Web 服务器更改的 URL 有限制。但是,将这些值放在 POST 请求的正文中应该可以工作。
  • @thatidiotguy 根据他使用的 URL,它看起来像 GET。这很可能是答案。让它成为一个,我会给你一个赞成票。
  • 对不起,我不确定仅从我的控制器方法注释中是否清楚,但请求类型当前是 POST。我用它的所有实际参数修改了实际的 URL,只留下了相关的部分。
  • 这个请求需要多长时间?它是成功返回还是您的网络服务器因为运行时间太长而将其切断? (或者也许 spring mvc 有时间限制?)

标签: java ajax spring spring-mvc


【解决方案1】:

如果您发出 GET 请求,则 URL 的长度会受到限制,具体取决于您的 HTTP 服务器/应用程序服务器。如果您将此请求更改为表单编码的 POST 请求并将该信息放入正文中,您可能会避免该问题。

【讨论】:

  • 抱歉,我不确定仅从我的控制器方法注释中是否清楚,但请求类型当前是 POST。
  • @BenSiver 那你是在传递 URL 中的信息吗?您应该使用 application/x-www-form-urlencoded 作为内容类型并将该信息放入 HTTP 正文中。
  • 内容类型当前设置为 application/x-www-form-urlencoded,并且信息作为编码的表单数据传递。我将编辑我的问题以包含此内容,以为我会简化问题,但这可能很重要:)
【解决方案2】:

对于那些感兴趣的人,我在 Spring MVC 中调试了一段时间,但无法准确定位我的请求被截断的位置。似乎甚至从根 Tomcat 请求处理程序收到了我的请求的截断版本。可能有一些网络服务器设置阻止发送整个请求。

我的解决方案只是将内容类型更改为 JSON,并更改我的请求处理以处理此问题。不理想,但可以。

【讨论】:

    猜你喜欢
    • 2015-11-24
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多