【问题标题】:Jersey 2 gzip compression not have Content-Encoding header in responseJersey 2 gzip 压缩没有响应的 Content-Encoding 标头
【发布时间】:2015-12-13 10:07:55
【问题描述】:

我已阅读:compress-responses-in-jersey 并拥有 Jersey 2 配置:

    @ApplicationPath("/jaxrs/")
public class AppConfig extends ResourceConfig {

    public AppConfig() {
        super(AdvertisementResource.class, MultiPartFeature.class);
        packages("jaxrs");
        EncodingFilter.enableFor(this, GZipEncoder.class, DeflateEncoder.class);
    }
}

我有标题请求:

GET http://localhost:8081/jaxrs/admin-adblock
Accept:application/json
Cache-Control:no-cache
Content-Type:application/json
Authorization:Basic c21h... 
Accept-Encoding:gzip,deflate

但标题响应是:

HTTP/1.1 200 OK
Content-Type: application/json
Vary: Accept-Encoding
Server: Jetty(9.2.2.v20140723)

响应 Content-Encoding:gzip 的标题丢失了,如果我有 Vary: Accept-Encoding 则会出现:

EncodingFilter.enableFor(this, GZipEncoder.class, DeflateEncoder.class);

如果我删除压缩和注释 EncodingFilter 行响应标题是:

HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(9.2.2.v20140723)

或者这个:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 369
Server: Jetty(9.2.2.v20140723)

我正在使用Intellij Rest Client Tool 进行测试,但我不确定我是否收到来自服务器的压缩响应?

我已下载球衣源并设置断点here 并使用 Intellij 调试休息服务 Web 应用程序,这里似乎添加了 CONTENT_ENCODING gzip:

response.getHeaders().putSingle(HttpHeaders.CONTENT_ENCODING, contentEncoding);

但它在 Intellij Rest Client 工具的响应标头中缺失..

【问题讨论】:

    标签: java rest gzip jersey-2.0


    【解决方案1】:

    我已经下载了 SoapUI 并测试了相同的 Rest 请求响应标头:

    HTTP/1.1 200 OK
    Content-Type: application/json
    Vary: Accept-Encoding
    Content-Encoding: gzip
    Content-Length: 204
    Server: Jetty(9.2.2.v20140723)
    

    Intellij Rest 客户端工具正在隐藏响应标头 Content-Encoding 和 Content-Length.. 我开了新的issue

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 2020-06-08
      • 1970-01-01
      • 2021-08-13
      • 2010-10-07
      • 2020-02-11
      • 2017-09-02
      • 2021-10-20
      • 1970-01-01
      相关资源
      最近更新 更多