This repository was archived by the owner on Nov 20, 2018. It is now read-only.
This repository was archived by the owner on Nov 20, 2018. It is now read-only.
Continuation of encoding in Cookie discussion #547
Closed
Description
Also open on Katana: http://katanaproject.codeplex.com/workitem/442
Forcefully encoding and forcefully decoding breaks interoperability with existing solutions other than Microsoft.Owin. Furthermore cookie handling is now non-symmetrical in operations. Both the write and read use Uri.EscapeDataString, but the read operation does extra work which invalidates Base64.
public static RequestCookieCollection Parse(IList<string> values)
{
if (values.Count == 0)
{
return Empty;
}
IList<CookieHeaderValue> cookies;
if (CookieHeaderValue.TryParseList(values, out cookies))
{
if (cookies.Count == 0)
{
return Empty;
}
var store = new Dictionary<string, string>(cookies.Count);
for (var i = 0; i < cookies.Count; i++)
{
var cookie = cookies[i];
var name = Uri.UnescapeDataString(cookie.Name.Replace('+', ' '));
var value = Uri.UnescapeDataString(cookie.Value.Replace('+', ' '));
store[name] = value;
}
return new RequestCookieCollection(store);
}
return Empty;
}