Rails 关于 render json 字符串的诡异问题

chucai · 2012年06月26日 · 最后由 heliang7 回复于 2012年06月26日 · 2570 次阅读

问题是这样的

我写了一个 api 接口,如 /api/upload.json,用于上传文件 上传文件成功后,我会返回一个 json 字符串,提示上传成功。字符串的形式如下:

{"token":"3985qh1qer4yn","url":"http://xxxxxxx:port/3985qh1qer4yn"}

但是,不知道为什么,我抓包后,返回的 body 中,会有一些特别的字符串

da
{"token":"3985qh1qer4yn","url":"http://xxxxxx:port/3985qh1qer4yn"}
0

不是特定的接口这样,是所有接口都这样。 如下是我的 Rails action 代码

reply = video.to_hash
logger.info reply.inspect
render :json => reply.to_json

大家遇到过这种情况么?

问题已经解决,这是因为 Nginx 返回的是 chunked 编码

Chunked编码使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。每个Chunk分为头部和正文两部分,头部内容指定下一段正文的字符总数(十六进制的数字)和数量单位(一般不写),正文部分就是指定长度的实际内容,两部分之间用回车换行(CRLF)隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,是一些附加的
需要 登录 后方可回复, 如果你还没有账号请 注册新账号