0


【浏览器】url参数中的“+”全部变成了空格原因及解决办法

背景

今天在获取其他站点重定向添加到我cms后台管理的url参数时,碰到参数中的“+”全部变成了空格的情况

原因

是URL中默认的将“+”号转义了

W3C标准规定,当Content-Type为application/x-www-form-urlencoded时,URL中查询参数名和参数值中空格要用加号+替代,所以几乎所有使用该规范的浏览器在表单提交后,URL查询参数中空格都会被编成加号+。

而在另一份规范RFC2396,定义URI里, URI里的保留字符都需转义成%HH格式(Section 3.4 Query Component),因此空格会被编码成%20,加号+本身也作为保留字而被编成%2B,对于某些遵循RFC 2396标准的应用来说,它可能不接受查询字符串中出现加号+,认为它是非法字符。

所以一个安全的举措是URL中统一使用%20来编码空格字符。

解决方法(2种):

  • 将客户端带“+”的参数中的“+”全部替换为‍“2B%”
  • 将空格替换为“+”,这种方式只适用于参数中有‍“+”没有空格的情况
标签: 前端 html javascript

本文转载自: https://blog.csdn.net/hzxOnlineOk/article/details/129495064
版权归原作者 hzxOnlineOk 所有, 如有侵权,请联系我们删除。

“【浏览器】url参数中的“+”全部变成了空格原因及解决办法”的评论:

还没有评论