0

我有一个查询字符串参数,它是一个被转换为 Base64 的编码字符串。然后将该参数嵌入到电子邮件中的链接中。当我单击电子邮件中的链接时,查询字符串参数已将其中的所有 + 字符替换为空格字符。没有其他区别。有没有一种方法我可以调用来清理字符串并再次用加号有效地替换空格。我目前正在做一个字符串替换,这有点胖。是什么导致了替换,但我不确定是什么。有没有人遇到过这样的事情?

示例 - 浏览器 URL 中的查询字符串参数值:

yo3rZZbZyG4UCN+L3pcTYJXmWEggnkW1qcyJk2uBrVTtGUSKIlBcJ8e9TSx8BHjHJv0JhI8H6LbIqUl+3lA7qn+lOgpSi3rCGN4bm5moOWcCA449C1Z3zj7J1FkOXH2HMox4VUZ7x7fF65MRwuBBmw==

控制器动作中的字符串值:

yo3rZZbZyG4UCN L3pcTYJXmWEggnkW1qcyJk2uBrVTtGUSKIlBcJ8e9TSx8BHjHJv0JhI8H6LbIqUl 3lA7qn lOgpSi3rCGN4bm5moOWcCA449C1Z3zj7J1FkOXH2HMox4VUZ7x7fF65MRwuBBmw==

4

3 回答 3

2

您应该对链接的 base64 字符串进行 URL 编码,因此它是:

yo3rZZbZyG4UCN%2BL3pcTYJXmWEggnkW1qcyJk2uBrVTtGUSKIlBcJ8e9TSx8BHjHJv0JhI8H6LbIqUl%2B3lA7qn%2BlOgpSi3rCGN4bm5moOWcCA449C1Z3zj7J1FkOXH2HMox4VUZ7x7fF65MRwuBBmw%3D%3D

HttpUtility.UrlEncode(base64str)在 .NET 或encodeURIComponent(base64str)javascript 中

于 2013-01-11T12:03:15.907 回答
1

您可以使用 System.Web.HttpServerUtility.UrlTokenEncode (来自http://brockallen.com/2014/10/17/base64url-encoding/#comments

于 2014-11-20T14:59:40.800 回答
0

这样做是因为 + 号被解释为表示后面跟着另一个参数的标记。这就是它被破坏的原因。在将字符串传递给服务器之前,您应该对字符串进行 URL 编码。

于 2013-01-11T12:12:57.117 回答