Working with cookies
In the case of WebAssembly, you may need to work with the browser cookies to either read or set values with expiration support. For these purposes, Uno Platform provides the Uno.Web.Http.CookieManager
class.
Prerequisites
All types related to cookie management are WebAssembly-specific and reside in the Uno.Web.Http
namespace. When writing code which uses these types, you must wrap it in #if __WASM__
blocks and either fully qualify these types (e.g. Uno.Web.Http.Cookie
or Uno.Web.Http.SetCookieRequest
) or add a using statement to the top of the file, wrapped within #if
, as follows:
#if __WASM__
using Uno.Web.Http;
#endif
Setting a cookie
To set a cookie, create an instance of Uno.Web.Http.SetCookieRequest
and initialize the values you are interested in. The following cookie attributes are supported:
- Name
- Value
- Path
- Domain
- Max-age
- Expires
- Secure
- SameSite
Then set the cookie using the SetCookie
method.
#if __WASM__
var cookie = new Cookie("MyCookie", "somevalue");
var request = new SetCookieRequest(cookie)
{
Path = "/",
Expires = DateTimeOffset.UtcNow.AddDays(2),
Secure = true,
};
CookieManager.GetDefault().SetCookie(request);
#endif
Note
If your cookie contains special characters, you may use Uri.EscapeDataString
to escape those characters when setting the cookie and later use Uri.UnescapeDataString
to decode them.
Getting active cookies
To retrieve the active cookies, use the GetCookies
method:
#if __WASM__
var cookies = CookieManager.GetDefault().GetCookies();
foreach (var cookie in cookies)
{
Debug.WriteLine(cookie.Name);
Debug.WriteLine(cookie.Value);
}
#endif
Note
Browser only provides the Name
and Value
properties for reading. Other attributes can be only used as part of the SetCookie
request.
Deleting a cookie
To delete a cookie, provide its Name
and optionally the Domain
and Path
to the DeleteCookie
method:
#if __WASM__
CookieManager.GetDefault().DeleteCookie("MyCookie", path: "/");
#endif