Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

urlencode 与愚蠢的我

  最近我做了一件很蠢的事,简直被自己蠢哭了!由于传输数据使用 JSON 格式,而 JSON 在 urlencode 中由于大括号、双引号、逗号,这些字符大量出现,要是全都使用转义的话会增大很多数据量。于是我没有对这些字符转义,结果在一些莫名其妙的浏览器上出问题了。
  我只是做了这么一个简单的转义,不直接调用 encodeURIComponent,而是对 JSON 中常用且不是 QueryString 关键的字符不做转义,类似下面这样 var data={a:"测试"};
JSON.stringify(data).replace(/[^{":[\],}]+/g,encodeURIComponent);
  这些字符本该是 URL 安全的才对,结果在某些浏览器上会出问题(好像 Win Phone 就有问题,但具体也没做过完全统计)。一些奇怪的浏览器会将这些字符以 \x** 的形式转义,造成服务器端的 JSON 解析错误。
  于是我得出如下几点总结与思考:
  1. urlencode 必须彻底
  2. 对 JSON 做 urlencode 太奢侈了
  3. 从前端到后端的传输是不是也应该支持 GZIP?
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^