.net 4.5版本WebRequest和Webclient中的一个url转义bug
有时我们把一个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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。