我正在尝试通过 QueryString 将 Base64 字符串传递给 C#.Net Web 应用程序。当字符串到达时,“+”(加号)符号被替换为空格。似乎自动 URLDecode 过程正在执行此操作。我无法控制通过 QueryString 传递的内容。有没有办法处理这个服务器端?
例子:
http://localhost:3399/Base64.aspx?VLTrap=VkxUcmFwIHNldCB0byAiRkRTQT8+PE0iIHBsdXMgb3IgbWludXMgNSBwZXJjZW50Lg==
产生:
VkxUcmFwIHNldCB0byAiRkRTQT8 PE0iIHBsdXMgb3IgbWludXMgNSBwZXJjZW50Lg==
人们建议对查询字符串进行 URLEncoding:
System.Web.HttpUtility.UrlEncode(yourString)
我不能这样做,因为我无法控制调用例程(它可以与其他语言一起正常工作)。
还有用加号替换空格的建议:
Request.QueryString["VLTrap"].Replace(" ", "+");
我有这个想法,但我对此感到担忧,我应该首先提到这一点,我不知道除了加号之外还有哪些其他字符可能格式不正确。
我的主要目标是在 QueryString 通过解码器之前拦截它。
为此,我尝试查看 Request.QueryString.toString() 但这包含相同的格式错误的信息。有什么方法可以在URLDecoded之前查看原始 QueryString 吗?
经过进一步测试,.Net 似乎希望从 QuerString 进来的所有内容都经过 URL 编码,但浏览器不会自动对 GET 请求进行 URL 编码。