当前位置: 首页 > 知识库问答 >
问题:

禁用传输编码:在Spring Webflux响应中分块

郑嘉年
2023-03-14

我使用SpringWebFlux反应式库创建了大量RESTAPIendpoint。我现在面临的问题是,SpringWebFlux返回的响应具有传输编码:分块HTTP头。因为哪个客户端应用程序使用像Axios这样的库(https://github.com/axios/axios)浏览器javascript中基于promise的HTTP客户端失败。如何关闭传输编码:分块?

Spring webflux应用程序使用curl的响应示例

< 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浏览器中使用它们。

共有1个答案

卢黎昕
2023-03-14

我不认为你可以用Reactor Netty(Spring Boot web flux使用的默认服务器)禁用分块编码。另一种方法是设置< code>Content-Length头,这意味着在将整个响应写入网络之前对其进行缓冲。这对于背压支持来说并不是最理想的。

我查找了axios客户端,我只发现了一个关于HTTP流支持的未解决的问题,这与传输编码不同:分块。你能更详细地说说你是如何得出这个结论的吗?

 类似资料:
  • 问题内容: 该代码是否有效的HTTP / 1.1? 我认为我在这里违反HTTP / 1.1?文本文件似乎确实可以正常工作,但这可能是偶然的。我的标题是“ 200 OK”还是需要为“ 100”?一个头足够吗? 问题答案: 如果要进行分块传输编码,则实际上需要设置该标头: 您可以从google返回的标头中看到该标头,该标头会对主页以及最可能的其他页面进行分块传输: 编辑 Yikes,读起来太复杂了:

  • 我正在使用泽西创建RESTful API资源,并使用生成响应。 RESTful资源的示例代码: 在响应中,它在响应头中返回分块传输编码。在“Jersey world”中,让它返回内容长度标题而不是响应标题中的传输编码:分块标题的正确方式是什么?

  • 我们正在尝试让Flask web服务正常工作,但是流式帖子出现了一些问题,例如,当标题包含传输编码时:chunked。 似乎默认的flask不支持HTTP 1.1。这有什么办法吗? 我们正在运行此命令: 违反此代码: 以下是旋度输出: 这是Flask服务器的输出:

  • 我收到一个标题为: 内容-长度:18588 content-type:application/json;charset=utf-8 日期:2015年12月2日星期三12:58:51 GMT 服务器:apache-coyote/1.1 在将“application/json”编码字符串发送到视图之前,是否有可能将其更改为“text/plain;charset=iso-8859-1”编码?我正在使用s

  • 下面的代码是否阻止调用,如果是,如何使其成为非阻塞?i、 e.使反应式Java流的使用变得无用?如何在不阻塞呼叫的情况下分页? 目前,我有一个webClient调用后端服务,该服务返回

  • 如能提供任何协助,将不胜感激。