Request.QueryString 没有返回正确的值
Request.QueryString not returning the correct value
我正在对 URL 的值使用 AES 加密。我在这里仅使用一个参数对其进行了采样以演示问题:
http://localhost:12345/pagename?id=ha3bEv8A%2ffs0goPGeO6NPQ%3d%3d
Request.QueryString["id"]
returns "ha3bev8a/fs0gopgeo6npq=="
这显然与加密 ID 的值不匹配。 QueryString 有问题吗?
您得到一个 URL 编码的查询字符串,Request.QueryString["id"]
似乎可以为您解码。你总是可以重新编码它:
string decodedId = Request.QueryString["id"];
string reEncodedId = HttpUtility.UrlEncode(decodedId);
您看到的值实际上是正确的。可能让您感到困惑的是它的呈现方式。 URL中的id值是用URL编码编码的。
某些字符必须以不同的方式在 URL 字符串中编码,因为它们是特殊字符,如果编码不正确,有时会弄乱字符串的解释方式。
例如,在您提供的查询字符串中:
http://localhost:12345/pagename?id=ha3bEv8A%2ffs0goPGeO6NPQ%3d%3d
%2f 字符是一种编码“/”字符的方式,而 %3d 是一种编码“=”字符的方式。
当您通过获取 Request.QueryString["id"] 获取值时,它会将其从 URL 编码字符串解码回原始文本。
查看此页面以获取更多参考。
https://www.w3schools.com/tags/ref_urlencode.asp
我正在对 URL 的值使用 AES 加密。我在这里仅使用一个参数对其进行了采样以演示问题:
http://localhost:12345/pagename?id=ha3bEv8A%2ffs0goPGeO6NPQ%3d%3d
Request.QueryString["id"]
returns "ha3bev8a/fs0gopgeo6npq=="
这显然与加密 ID 的值不匹配。 QueryString 有问题吗?
您得到一个 URL 编码的查询字符串,Request.QueryString["id"]
似乎可以为您解码。你总是可以重新编码它:
string decodedId = Request.QueryString["id"];
string reEncodedId = HttpUtility.UrlEncode(decodedId);
您看到的值实际上是正确的。可能让您感到困惑的是它的呈现方式。 URL中的id值是用URL编码编码的。 某些字符必须以不同的方式在 URL 字符串中编码,因为它们是特殊字符,如果编码不正确,有时会弄乱字符串的解释方式。
例如,在您提供的查询字符串中: http://localhost:12345/pagename?id=ha3bEv8A%2ffs0goPGeO6NPQ%3d%3d
%2f 字符是一种编码“/”字符的方式,而 %3d 是一种编码“=”字符的方式。
当您通过获取 Request.QueryString["id"] 获取值时,它会将其从 URL 编码字符串解码回原始文本。
查看此页面以获取更多参考。 https://www.w3schools.com/tags/ref_urlencode.asp