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

时间:2014-04-17 09:06:45

标签: 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

这是什么?

1 个答案:

答案 0 :(得分:7)

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

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

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

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