Rails响应体中奇怪的额外字符

asa*_*sov 1 ruby-on-rails http puma

我正在使用Puma服务器运行rails应用程序,并且每个响应在开始时都有一些十六进制数字(看起来像体长)和每个响应的结束(始终为零).

HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: chrome=1
Content-Type: application/json; charset=utf-8
ETag: "8e6d795d26a3839c23c0b28f7b2e3c08"
Cache-Control: max-age=0, private, must-revalidate
Set-Cookie: [skip]; path=/; HttpOnly
X-Request-Id: 741cdbde-39a8-4b99-9af7-15a7e65ff1ac
X-Runtime: 0.202731
Transfer-Encoding: chunked

f <-- THIS
{"response":{}}
0 <-- AND THIS
Run Code Online (Sandbox Code Playgroud)

这是什么?

Bar*_*mar 7

这就是分块传输编码的工作方式.它将主体分段发送,前面是一行,包含十六进制的长度.身体的末端由0长度较大的块表示.

所以你要展示的是第一个块长15个字符,并且没有第二个块.

正确的HTTP客户端或API应该删除这些块头,然后返回内容.

有关更多详细信息,请参阅Wikipedia ; 有关官方规范,请参阅RFC 2616.