Request.QueryString 未返回正确的值



我正在使用AES加密作为URL的值。我在这里只用一个参数对它进行了采样来演示问题:

http://localhost:12345/pagename?id=ha3bEv8A%2ffs0goPGeO6NPQ%3d%3d

Request.QueryString["id"]返回明显与加密 ID 的值不匹配的"ha3bev8a/fs0gopgeo6npq=="。 有什么东西绊倒了查询字符串吗?

您正在获得一个 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

最新更新