发布日期:2024-05-10 18:10 点击次数:132
咱们知谈,在GET恳求中会对URL中非西翰墨符进行编码,这么作念的指标等于为了 幸免歧义。看底下的例子,
针对 “name1=value1&name2=value2” 的例子,咱们来谈一下数据从客户端到就业端的领略经过。率先,上述字符串在计较机顶用ASCII吗暗示为:
6E616D6531 3D 76616C756531 26 6E616D6532 3D 76616C756532 6E616D6531:name1 3D:= 76616C756531:value1 26:& 6E616D6532:name2 3D:= 76616C756532: value2复制代码
就业端在接纳到该数据后就不错遍历该字节流,一个字节一个字节的吃,当吃到3D这字节后,就业端就知谈前边吃得字节暗示一个key,再往后吃,若是遭遇26,讲明从刚才吃的3D到26子节之间的是上一个key的value,依此类推就不错领略出客户端传过来的参数。
目下探讨这么一个问题,若是咱们的参数值中就包含=或&这种绝顶字符的工夫该怎么办?比如,“name1=value1”,其中value1的值是“va&lu=e1”字符串,那么本色在传输经过中就会酿成这么“name1=va&lu=e1”。这么,咱们的本意是唯唯一个键值对,然而就业端却会领略成两个键值对,这么就产生了歧义。
那么,怎么科罚上述问题带来的歧义呢?科罚的见解等于对参数进行URL编码:举例,咱们对上述会产生歧义的字符进行URL编码后恶果:“name1=va&lu=”,这么就业端会把紧跟在“%”后的字节当成庸碌的字节,等于不会把它当成各个参数或键值对的分隔符。