【问题标题】:Spring MVC XML result chunked, missing Content-length headerSpring MVC XML 结果分块,缺少 Content-length 标头
【发布时间】:2014-07-03 13:37:10
【问题描述】:

我有一堆返回一些内容的 Web 服务,有时 > 100kb。 不幸的是,对于更大的结果,我得到了传输编码的部分响应:分块。

有没有办法禁用分块?

这就是我的方法:

@RequestMapping(value = "/form/{repository}/{objectId}", method = RequestMethod.GET, headers="()")
@ResponseBody
public FormHelper getFormConfig(HttpServletRequest req, HttpServletResponse resp, @PathVariable String repository,
        @PathVariable("objectId") String objectId) throws Exception

这就是 Spring XML 配置:

<import resource="classpath*:context-aaa.xml" />

<mvc:annotation-driven />

<bean
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="useDefaultSuffixPattern" value="false" />
</bean>

我对 Jersey 库有同样的问题,所以我将项目重写为 Spring MVC,但它仍然存在......

提前感谢您的帮助。 马吕斯

【问题讨论】:

  • 看起来 JSON 结果包含 Content-length 属性并且结果未分块。 XML 被分块返回,因此我报告了一个错误:jira.spring.io/browse/SPR-11948
  • 这可能会有所帮助:stackoverflow.com/questions/6299432/…
  • 这个答案指出 Content-length 标头是禁用分块传输的唯一选项。我已经知道了,不幸的是,使用 spring 我无法控制这样的标头,所以我向 Spring 团队报告了这个问题。
  • 为什么不能设置Content-Length?根据这个 JIRA,从 Spring 3.0.5 开始可以在 MappingJacksonJsonView 上使用:jira.spring.io/browse/SPR-7866
  • 对于 JSON,它是否已修复并且现在已正确设置,但对于 XML 则不是。

标签: spring spring-mvc


【解决方案1】:

我可以通过添加下面的过滤器来完成这项工作:

<filter>
    <filter-name>bufferFilter</filter-name>
    <filter-class>org.springframework.web.filter.ShallowEtagHeaderFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>bufferFilter</filter-name>
    <url-pattern>/services/*</url-pattern>
</filter-mapping>

https://jira.spring.io/browse/SPR-11948

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-06
    • 2011-01-26
    • 2013-02-15
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    相关资源
    最近更新 更多