我试图在记录模式下使用wiremock修改响应。 我正在扩展 ResponseTransformer 并替换绝对网址引用。 Wiremock返回修改后的响应但不更新Content-Length标头,因此chrome认为只需要下载更多字节。 当我尝试添加Content-Length标题时:
...
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;
}
Set-Cookie之类的标题会消失 和"转移编码:chunked"额外添加。
使用: wiremock-独立-2.14.0.jar
答案 0 :(得分:0)
1)这个bug在这里重新发布了github.com/tomakehurst/wiremock/issues/907
2)我的解决方法是不通过在客户端忽略它们的地方添加白色字符来改变实际内容长度,例如
<script src="https://example123456.com/aaa"></script>
替换为:
<script src= "https://example.com/aaa"></script>