我使用Spring Webflux反应库创建了大量REST API端点。我现在面临的问题是,Webflux返回的响应有 transfer-encoding:chunked HTTP标头。由于哪个客户端应用程序使用像Axios(https://github.com/axios/axios)这样的库承诺基于HTTP客户端来自浏览器javascript失败。我们如何关闭 transfer-encoding:chunked ?
使用curl从Spring webflux应用程序响应示例:
< HTTP/1.1 200 OK
< transfer-encoding: chunked
< Content-Type: application/json;charset=UTF-8
<
[{"default_project_id":"admin","description" .......
"name":**"use* Connection #0 to host 10.1.0.9 left intact**
r1"}},"links":{"self":"http://10.10.10.51:5000/v3/users/f6ee9d6217404d2ba73f323edff06bf8"},
"password_expires_at":null,
"id":"f6ee9d6217404d2ba73f323edff06bf8"}]
请帮忙。我看到了整个响应,但响应的分块正在抛弃http客户端库,特别是从Web浏览器中消耗它们。
答案 0 :(得分:0)
我不认为您可以使用Reactor Netty(Spring Boot + WebFlux使用的默认服务器)禁用分块编码。另一种方法是设置Content-Length
标头,这意味着在将整个响应写入网络之前缓冲整个响应。这对于背压支持来说并不是最佳选择。
我查找了axios客户端,但我发现了opened issue about HTTP streaming support,这与Transfer-Encoding: chunked
不同。你能详细说明你是如何得出这个结论的吗?