1
2
概括一下,我创建了一个使用base-64编码参数的URL,该参数本身就是一个三重DES加密字符串。因此,URL看起来像http://[Domain_Name]/SDN1S2JkeXpyVW890链接引用了MVC网站上的控制器操作。 然后,URL被插入到一封HTML格式的电子邮件中。查看错误日志,我们发现大约5%的响应链接的公共用户抛出了“无效的base-64字符串错误”。这些错误中的大部分(但不是全部)与IE6用户代理有关。 在尝试了许多基于字符和URL编码的可能解决方案后,发现在客户端过程中的某个地方,URL被转换为小写-当然,这打破了base-64编码(因为它同时使用大写和小写编码字符)。 案件损坏是由客户端的浏览器、电子邮件客户端还是本地防病毒软件引起的,我还无法确定。 解决方案 不要使用任何标准的base-64编码方法,而是使用base-32或zBase-32编码——这两种方法都不区分大小写。 有关详细信息,请参阅以下链接 MyTenPennies Base-32 .NET Implementation 这个故事的寓意是,Base-64URL编码在一些公共环境中可能是不可靠的。Base-32虽然略为冗长,但却是一个更好的选择。 希望这能有所帮助。 |
2
1
看起来你真的很亲密。你从你的
试试这个:
|
3
0
这是一个有趣的问题。我的猜测是IE 6正在吃掉一些角色。 例如,包含的字符串的长度为“ywhar0xznxpjdnfnddc0yxzbk2jnqt090” 不是 四的倍数(这是FromBase64工作的要求 http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx ) 但是,如果你要填充这个字符串,直到它的长度是四的倍数(“ywhar0xznxpjdnfnddc0yxzbk2jnqt090”+“a12”),那么这就行了。 MSDN文档说,一个(“=”)或两个(“==”)相等的字符用于填充Base64方法,我怀疑IE 6正在从您发送的字符串中截断它。 这完全是猜测,但我希望它能有所帮助。 |