.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&param2=b&param3=http%3A%2F%2Fwww.baidu.com");

.net4.0 访问地址:

http://www.xxx.com/do?param1=a&param2=b&param3=http%3A%2F%2Fwww.baidu.com&verify=md5   

response:success

一旦用了.net4.5访问,访问地址莫名其妙变了,就会变成验证不通过的情况了

 

http://www.xxx.com/do?param1=a&param2=b&param3=http:%2F%2Fwww.baidu.com&verify=md5  

 

response:fail

 

这就是我今天测试到的一个bug

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。