ASP.NET URL 加密参数带加号如何处理?

q282177567 2015-05-20 05:19:51
问题: URL 加密参数带加号,Request.QueryString 时,加号变成了空格
在网上我查到两种方法,
法一、是先自己方法加密得到带加号的【kwB+AJoLE1o=】,是把加号替换成 %2b得到【kwB%2bAJoLE1o=】
法二、是先自己方法加密得到带加号的【kwB+AJoLE1o=】,再Server.UrlEncode加密得到【kwB%2bAJoLE1o%3d】;

但是地址栏的参数还是【kwB+AJoLE1o=】,这两种方法Request.QueryString 之后,得到的还是空格
要怎么办啊?

还有其他办法吗???



...全文
645 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fulong0425 2016-11-22
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
如果你对 kwB%2bAJoLE1o= 和 kwB%2bAJoLE1o%3d 分别执行 UrlDecode 计算,结果是一样的,都是 kwB+AJoLE1o=。 其实凡是刻意进行 UrlEnocde 的url参数,在接收端都需要刻意进行 UrlDecode 计算。而没有进行 UrlEncode 计算的 url参数,假设在多年以前的ie低版本浏览器上则是不需要在接收端不需要进行UrlDecode计算的,而在ie高版本则需要,并且其它浏览器始终都需要(可见,支持程度发生逆转的就是ie浏览器自己了,其它的浏览器本来就一直就不支持不成对写UrlEncode/UrlDecode的形式)。 因此,如果是4、5年前出现的asp.net的入门书上的写法可能就不对了。现在需要刻意成对地执行 UrlEncode/UrlDecode计算。而一些使用者老的ie7、8之类的asp.net程序员则不是忘记UrlEncode,就是忘记了UrlDecode,因为他们测试范围太窄了。
引用 5 楼 sp1234 的回复:
如果你对 kwB%2bAJoLE1o= 和 kwB%2bAJoLE1o%3d 分别执行 UrlDecode 计算,结果是一样的,都是 kwB+AJoLE1o=。 其实凡是刻意进行 UrlEnocde 的url参数,在接收端都需要刻意进行 UrlDecode 计算。而没有进行 UrlEncode 计算的 url参数,假设在多年以前的ie低版本浏览器上则是不需要在接收端不需要进行UrlDecode计算的,而在ie高版本则需要,并且其它浏览器始终都需要(可见,支持程度发生逆转的就是ie浏览器自己了,其它的浏览器本来就一直就不支持不成对写UrlEncode/UrlDecode的形式)。 因此,如果是4、5年前出现的asp.net的入门书上的写法可能就不对了。现在需要刻意成对地执行 UrlEncode/UrlDecode计算。而一些使用者老的ie7、8之类的asp.net程序员则不是忘记UrlEncode,就是忘记了UrlDecode,因为他们测试范围太窄了。
既然这个不行,请求你给出解决办法。
q282177567 2015-06-26
  • 打赏
  • 举报
回复
原来是我传参有问题,页面中间跳转过了
  • 打赏
  • 举报
回复
如果你对 kwB%2bAJoLE1o= 和 kwB%2bAJoLE1o%3d 分别执行 UrlDecode 计算,结果是一样的,都是 kwB+AJoLE1o=。 其实凡是刻意进行 UrlEnocde 的url参数,在接收端都需要刻意进行 UrlDecode 计算。而没有进行 UrlEncode 计算的 url参数,假设在多年以前的ie低版本浏览器上则是不需要在接收端不需要进行UrlDecode计算的,而在ie高版本则需要,并且其它浏览器始终都需要(可见,支持程度发生逆转的就是ie浏览器自己了,其它的浏览器本来就一直就不支持不成对写UrlEncode/UrlDecode的形式)。 因此,如果是4、5年前出现的asp.net的入门书上的写法可能就不对了。现在需要刻意成对地执行 UrlEncode/UrlDecode计算。而一些使用者老的ie7、8之类的asp.net程序员则不是忘记UrlEncode,就是忘记了UrlDecode,因为他们测试范围太窄了。
  • 打赏
  • 举报
回复
你是怎么传递的?我用下面的测试了没问题
<asp:HyperLink runat="server" ID="link1" Text="TestUrlEncode" Target="_blank"></asp:HyperLink>
this.link1.NavigateUrl = "http://www.baidu.com?tk=" + HttpUtility.UrlEncode("kwB+AJoLE1o=");
q282177567 2015-05-20
  • 打赏
  • 举报
回复
引用 1 楼 chaozi 的回复:
System.Web.HttpUtility.UrlEncode
还是一样的。。。我是从另一个网站传参到我的网站上来的, 会不会因为文档的字符编号导致的?
  • 打赏
  • 举报
回复
HttpUtility.UrlEncode
寒舍人 2015-05-20
  • 打赏
  • 举报
回复
System.Web.HttpUtility.UrlEncode

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧