struts2 ajax json utf-8 中文 丢失字节

来源:互联网 发布:特效字幕制作软件 编辑:程序博客网 时间:2024/06/08 16:52

最近在使用 struts2 发送 json 时发现前台接收数据出现字节丢失的情况,经过数次测试发现并不具有必然性而是偶发的现象

通过对比 json 数据发现错误的 json 数据丢失了 3 个字节,猜测是与中文有关

在不改变原数据的情况下直接改用 PrintWriter 对象发送原数据,发现是可以正常发送的

经过跟踪 struts2 的 struts2-json-plugin-2.3.18 代码发现会在发送 json 数据时设置一个 content-length 的参数,即要发送的数据的字节数

查阅资料发现若指定 content-length 则浏览器会只读取指定的字节数,即使接收到的字节数大于该值

而在 struts2-json-plugin-2.3.18 代码发现如果指定参数 enableGZIP=true 则会走第一个分支不再设置 content-length 参数,在浏览器接收参数中可以发现有参数 Transfer-Encoding=chunked

而 http 中如果存在参数 Transfer-Encoding=chunked 则即使存在参数 content-length 参数失效

0 0
原创粉丝点击