博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js方法encodeURI后,关于get请求url长度的限制测试与总结
阅读量:5283 次
发布时间:2019-06-14

本文共 799 字,大约阅读时间需要 2 分钟。

(本文仅作个人记录只用比较啰嗦,重点只看红字部分即可)

Test.jsp

 

请求test1.jsp

 

IE11环境下,get请求url最多4096个字节;

请求的是?name=倾不见黄河之水天上来奔流到海不复回君不见高堂明镜悲白发朝如青丝暮成雪……(太长省略)

(君不见黄河之水天上来。。。不要在意这些细节)

经测试:

url计算长度时,对应的字符串是:

/test1.jsp?name=倾不见黄河之水天上来奔流……(太长省略)

没有前面的

关于汉字部分的编码:

通过js中encodeURI后,每一个汉字都进行转换成字符串,如:

“倾“的UTF-8编码是E580BE

encodeURI('倾')后变成:%E5%80%BE

encodeURI(encodeURI('倾'))后变成:%25E5%2580%25BE

即:url中的每一个汉字在encodeURI编码一次后占用成9个字节,在encodeURI编码两次后占用成15个字节!

这样,url前面的/test1.jsp?name=占用16个字节,还剩4096-16=4080个字节可用,换算成汉字就是:4080÷15=272个汉字。

与test1.jsp中取得的name这个参数的值的字节数816,汉字数816÷3=272一致;

 

另外:如果通过encodeURI转码导致url超过长度时,有可能最后一个汉字,比如“倾”转码成“%E5%80%BE”时,若url对应长度的4096个字节处于“%E5%80%BE”中间位置时,会发生截断处理,这将会导致“倾”这个汉字在test1.jsp中通过URLDecoder.decode时发生解码异常,所以在ie11下get传参时,url长度尽量不要太接近到4096,要保证最后一个汉字decode后不因为长度截断。

转载于:https://www.cnblogs.com/tapt/p/9556155.html

你可能感兴趣的文章
LLBL Gen Pro 设计器使用指南
查看>>
SetCapture() & ReleaseCapture() 捕获窗口外的【松开左键事件】: WM_LBUTTONUP
查看>>
Android 设置界面的圆角选项
查看>>
百度地图api服务端根据经纬度得到地址
查看>>
根据xml生成相应的对象类
查看>>
Android StageFrightMediaScanner源码解析
查看>>
打包java程序生成exe
查看>>
八叉树
查看>>
Git 远程仓库
查看>>
关于静态文本框透明度的问题
查看>>
javascript的发展及个人笔记
查看>>
全选,反全选,反选,获取选中的值,根据子选择控制全选按钮
查看>>
[CF#250 Div.2 D]The Child and Zoo(并查集)
查看>>
博客园博客插入公式
查看>>
hdu 1028 Ignatius and the Princess III(母函数入门+模板)
查看>>
Ubuntu下配置安装telnet server
查看>>
Codeforces 235 E Number Challenge
查看>>
ubuntu 常见命令整理
查看>>
EJBCA安装教程+postgresql+wildfly10
查看>>
(五十四)涂鸦的实现和截图的保存
查看>>