首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpServerUtility.UrlTokenDecode“有时”失败( Base-64 char数组的长度无效)。

HttpServerUtility.UrlTokenDecode“有时”失败( Base-64 char数组的长度无效)。
EN

Stack Overflow用户
提问于 2009-09-08 09:31:22
回答 2查看 5.6K关注 0票数 1

我们为样式表提供了一个IHttpHandler,并向页面添加了一个<link/>标记,如下所示:

代码语言:javascript
复制
HtmlGenericControl link = new HtmlGenericControl("link");
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("href", "stylesheet.axd?d=" +
                                    HttpServerUtility.UrlTokenEncode(token));
head.Controls.Add(link);

stylesheet.axd处理程序中,我们使用d查询字符串参数,如下所示:

代码语言:javascript
复制
var token = HttpServerUtility.UrlTokenDecode(Request.QueryString["d"]);

这在大多数情况下都是可行的,但我们不时会在日志中发现以下两个例外之一:

代码语言:javascript
复制
[FormatException: Invalid character in a Base-64 string.]
   System.Convert.FromBase64CharArray(Char[] inArray, Int32 offset, Int32 length)
   System.Web.HttpServerUtility.UrlTokenDecode(String input)
   ...

[FormatException: Invalid length for a Base-64 char array.]
   System.Convert.FromBase64CharArray(Char[] inArray, Int32 offset, Int32 length)
   System.Web.HttpServerUtility.UrlTokenDecode(String input)
   System.Web.HttpServerUtilityWrapper.UrlTokenDecode(String input)
   ...

有什么想法会导致这种现象吗?

备注:

  • 得到的URL是< 1500,因此在任何已知的URL限制(例如IE: 2083)下面,
  • 似乎独立于用户代理(我们对IE6、7、8、FF和Chrome)
  • (未经证实)怀疑包括AntiVirus产品、HTTP代理、浏览器加载项
  • 发现this远程相关的问题,但它是关于一个viewstate问题H 217/code>F 218
EN

回答 2

Stack Overflow用户

发布于 2009-09-08 09:45:51

我们也有类似的问题,所以我们避免了UrlTokenEncode,原因是base64有时会把字符写成'==‘等等,所以它们不能在url中正确地传输。我认为.NET中有一个bug,但是我们将它改为了后续,并且它开始工作了。

我们就是这样做的,一直都是这样的。

代码语言:javascript
复制
url += "&d=" + HttpServerUtility.UrlEncode( Convert.ToBase64String( ... ))

在接收方,我们只使用

代码语言:javascript
复制
data = Convert.FromBase64String( Request.QueryString["d"] ) 

我们不需要使用UrlDecode,因为查询字符串对象已经以解码格式存储信息。

票数 0
EN

Stack Overflow用户

发布于 2018-07-12 08:30:27

UrlTokenDecodeUrlTokenEncode实际上并不对base64url进行解码/编码,但是可以通过添加一些内容来实现。此外,还有一些选择可能更好,也可能不会更好。

请参阅C#: base64url according to RFC4648

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1392970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档