URL 编码细节

URL encoding details

对于URL编码,我的意思是这个(http://www.w3schools.com/tags/ref_urlencode.asp),我的问题是URL编码,我应该把param1=<xxx>&param2=<yyy>整体编码,还是只编码xxxyyy 部分?或者我应该分别编码 param1=<xxx>param2=<yyy> 吗?谢谢。

http://hostname/func?param1=<xxx>&param2=<yyy>

提前致谢, 林

如果在 ?

之后对所有内容进行编码
  • 您必须进行 1 次解码才能获得完整的字符串
  • 完成后,如果没有令人困惑的字符,您将能够访问您的参数(您可能会遇到问题,如果您在值中有 =,因为参数值分隔符或内部的 = 之间没有区别一个值 )

如果您只对参数进行编码

  • 你必须解码每个值
  • 一旦解码,您将能够毫无问题地直接访问您的参数值(如果值包含 = 则没有问题)

这就是为什么我建议只对值进行编码,以确保不会将 = 作为参数值分隔符和编码值混淆:

= 中的值将被编码,因此您会在 ? 之后找到 =将仅用于分隔符

假设你在 之后对所有内容进行编码? :

没问题:P1 = "abc" P2 = "123"

P1=abc&P2=123 => 编码 => P1=abc&P2=123 => 解码 => P1=abc&P2=123

问题:P1 = "a&b=c" P2 =“12”(不太可能,但假设它发生了)

P1=a&b=c&P2=12 => encoded => P1=a&b=c&P2b=12b=3a => decoded => P1=a&b=c&P2=12(如果你尝试访问,服务器将看到 3 个参数获取参数:P1 = a, b = c, P2, = 12 )