get请求时 参数中+号变空格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了get请求时 参数中+号变空格相关的知识,希望对你有一定的参考价值。
参考技术A 在进行非对称加解密的过程中,加过密的数据通过GET接受之后+号 会变成空格然后发现get参数通过base64
加号(+)是BASE64编码的一部分,而加号在QueryString中被当成是空格。 因此,当一个含有BASE64编码的字符串直接作为URL的一部分时,如果其中含有加号,则使用QueryString读取时,再使用BASE64解码就会发生错误
解决方式一:
str_replace(" ", "+",$data)
解决方法二:
改用POST提交
如何解决Http请求参数中加号变空格问题
http请求参数中英文加号是要进行url编码的,因为在http请求参数中加号就是空格的替代字符啊(因为空格对于http协议规定的url来说是一个非法字符),所以当你的请求参数中出现了一个加号,就会一律理解成一个空格。解决的方法就是对加号进行编码转换,url编码的方法是将需要转换的字符,转换成英文百分号加字符的十六进制形式,比如空格除了加号表示以外也可以表示成%20,20就是空格的十六进制形式。 参考技术A 错误原因:我没有深究原因,宽泛的说,就是在传输前后过程中,经历的几次编码和解码标准不同,导致加号、空格等字符的错误。
简单的解决方法:
遇到这种情况时,一种快速的解决方法是: 把参数中所有的加号“+”,替换为“%2B”即可
(可能这种方法并不好,应该可以采用传递前对数据进行某格式的encode,获取数据时进行decode即可)
以上是关于get请求时 参数中+号变空格的主要内容,如果未能解决你的问题,请参考以下文章