【问题标题】:Cookie encoding in BASE64 cannot be sent correctly to serverBASE64 中的 Cookie 编码无法正确发送到服务器
【发布时间】:2014-12-07 20:10:52
【问题描述】:

我使用 BASE64 编码 GUID 值并将它们添加到 cookie。例如,编码的 guid 值为vClFwpDbWE6JPUlnlBXMWg==。当服务器发送响应时,它会添加这个cookie。我用 Chrome 检查,这个值被浏览器正确接收。但是当浏览器发送另一个请求时,从HttpRequestMessage的cookies中cookie值变成了“vClFwpDbWE6JPUlnlBXMWg”,为什么有些字符被去掉了?

我使用 WebAPI2、MVC5 和 IIS7.5。

【问题讨论】:

    标签: asp.net cookies asp.net-web-api


    【解决方案1】:

    ASP.NET 看到 cookie 中的“=”字符并假定它是一个多值 cookie(请参阅相关问题 Storing multiple values in cookies)。

    最好的办法是将 GUID 按原样存储在 cookie 中,例如,使用 Guid.ToString() 将 GUID 转换为十六进制字符串,使用 new Guid(string) 将十六进制字符串转换回 GUID .或者,如果您确实需要将其压缩到 BASE64,请考虑使用 HttpServerUtility 的 UrlTokenEncodeUrlTokenDecode 方法。这些方法使用与 BASE64 非常相似的编码,但不使用 ASP.NET 特殊处理的“+”和“=”等字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-30
      • 2021-08-27
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      相关资源
      最近更新 更多