标签:
有时我们把一个url带入到另一个url中作为参数,这个参数就需要转义。比如:
http://www.baidu.com/s?wd=http%3A%2F%2Fwww.baidu.com
在代码中进行访问这段地址的时候,我们也会期望它照着给的地址访问,在.net 4.0中,确实会如此。
但是如果切换为.net 4.5版本,你就会发现你访问的url实际变成了:
http://www.baidu.com/s?wd=http:%2F%2Fwww.baidu.com
大多数情况下它不会造成什么影响。
但一旦站点对url有某些要求或者验证的时候,它就会造成不符合预期的结果了。
比如:
某个站点需要对url请求进行验证,把url前面所有参数拼接起来生成md5,拼接到url最后的verify中,
然后在服务端验证md5和前面的参数的产生是否一致,返回success或者fail。
md5 = ToMD5String("param1=a¶m2=b¶m3=http%3A%2F%2Fwww.baidu.com");
.net4.0 访问地址:
http://www.xxx.com/do?param1=a¶m2=b¶m3=http%3A%2F%2Fwww.baidu.com&verify=md5
response:success
一旦用了.net4.5访问,访问地址莫名其妙变了,就会变成验证不通过的情况了
http://www.xxx.com/do?param1=a¶m2=b¶m3=http:%2F%2Fwww.baidu.com&verify=md5
response:fail
这就是我今天测试到的一个bug
.net 4.5版本WebRequest和Webclient中的一个url转义bug
标签:
原文地址:http://www.cnblogs.com/irever/p/4310610.html