WebAPI编码cookie值

时间:2015-08-17 15:14:47

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

我在ASP.Net web api控制器上设置cookie。这是我的代码部分:

var cookie = new CookieHeaderValue(cookieName, cookieValue) 
{
    Expires = cookieExpires, Domain =cookieDomain,  Path= "/"
};
response.Headers.AddCookies(new[] {cookie});

我注意到cookie的值正在自动编码。因此abc==变为abc%3d%3d。这不会发生在常规的MVC控制器上。

如何防止编码发生?

2 个答案:

答案 0 :(得分:2)

它被编码,因为否则" abc =="字符串值将导致无效的cookie。编码是自动的,以防止无效字符,如" ="存在于cookie中。

我不确定你在MVC中发生了什么意思,也许当你在请求中访问cookie值然后它被解码了?

请参阅https://en.wikipedia.org/wiki/HTTP_cookie#Setting_a_cookie

修改 如果" abc ==" string是Base64编码的字节数组,然后你可以通过使用System.Web.HttpServerUtility UrlTokenEncode / UrlTokenDecode方法得到arround。然后不会发生其他编码。

答案 1 :(得分:1)

要防止它在下面使用,无论你在哪里阅读cookies:

Server.UrlDecode("Your string");

它将删除'%3d'并将其转换回'='