WireMock - ResponseTransformer 修改 body 后无效 content-length

WireMock - invalid content-length after modify body by ResponseTransformer

我正在尝试在记录模式下使用 wiremock 修改响应。 我正在扩展 ResponseTransformer 并替换绝对 url 引用。 Wiremock returns 修改了响应但没有更新 Content-Length header 所以 chrome 认为没有更多的字节要下载。 当我尝试通过 :

添加 Content-Length header

... Response.Builder.like(response).headers(updateContentLength(response.getHeaders(), modifiedBody.length()));
...

private HttpHeaders updateContentLength(HttpHeaders headers, int bodyLength) {
    HttpHeaders newHttpHeaders = HttpHeaders.noHeaders();

    for (HttpHeader header : headers.all()) {

        if(header.key().equalsIgnoreCase("Content-Length"))
        {
            newHttpHeaders.plus(new HttpHeader(header.key(), bodyLength +""));
        }
        else
        {
            newHttpHeaders.plus(header);
        }
    }
    return  newHttpHeaders;
}

有些 header 像 Set-Cookie 消失了 "Transfer-Encoding: chunked" 是额外添加的。

使用: wiremock-standalone-2.14.0.jar

1) 错误报告在这里 github.com/tomakehurst/wiremock/issues/907

2) 我的解决方法是通过在客户忽略它们的地方添加白色字符来不改变实际内容长度,例如

<script src="https://example123456.com/aaa"></script>

替换为:

<script src=      "https://example.com/aaa"></script>