Dart Cookie tutorial shows how to work with HTTP cookies in Dart using the Cookie class.
last modified April 4, 2025
The Cookie class in Dart represents an HTTP cookie, used for maintaining state between client and server. It’s part of the dart:io library for server-side applications.
Cookies store small pieces of data that persist across requests. They’re essential for sessions, authentication, and user tracking in web apps.
A Cookie object contains name-value pairs and optional attributes. These include expiration, domain, path, security flags, and same-site policy.
The class provides methods to parse cookie headers and format cookies for HTTP. It handles both server-side cookie creation and client-side cookie parsing.
This example shows how to create a simple cookie with just a name and value.
main.dart
import ‘dart:io’;
void main() { var cookie = Cookie(‘session_id’, ‘abc123xyz456’);
print(‘Name: ${cookie.name}’); print(‘Value: ${cookie.value}’); print(‘ToString: $cookie’); }
We create a Cookie with a name and value. The toString() method formats it properly for HTTP headers. This is the minimal cookie configuration.
$ dart main.dart Name: session_id Value: abc123xyz456 ToString: session_id=abc123xyz456
This example demonstrates setting various cookie attributes like expiration.
main.dart
import ‘dart:io’;
void main() { var cookie = Cookie(‘preferences’, ‘dark_mode=true’);
cookie.domain = ’example.com’; cookie.path = ‘/settings’; cookie.expires = DateTime.now().add(Duration(days: 30)); cookie.httpOnly = true; cookie.secure = true;
print(cookie); }
We configure a cookie with domain restriction, path, expiration date, and security flags. These attributes control cookie behavior in browsers.
$ dart main.dart preferences=dark_mode=true; Domain=example.com; Path=/settings; Expires=Sat, 04 May 2025 14:32:10 GMT; HttpOnly; Secure
This example shows how to parse a Set-Cookie header string into a Cookie object.
main.dart
import ‘dart:io’;
void main() { var header = ‘user_token=xyz789; Max-Age=3600; Path=/; Secure; SameSite=Lax’;
var cookie = Cookie.fromSetCookieValue(header);
print(‘Name: ${cookie.name}’); print(‘Value: ${cookie.value}’); print(‘MaxAge: ${cookie.maxAge}’); print(‘Path: ${cookie.path}’); print(‘Secure: ${cookie.secure}’); print(‘SameSite: ${cookie.sameSite}’); }
The fromSetCookieValue constructor parses HTTP Set-Cookie headers. It extracts all attributes automatically into the Cookie object properties.
$ dart main.dart Name: user_token Value: xyz789 MaxAge: 3600 Path: / Secure: true SameSite: SameSite.lax
This example demonstrates working with multiple cookies in HTTP headers.
main.dart
import ‘dart:io’;
void main() { var cookieHeader = ‘session=abc123; lang=en_US; theme=dark’;
var cookies = Cookie.fromCookieValue(cookieHeader);
for (var cookie in cookies) { print(’${cookie.name}: ${cookie.value}’); }
// Modify one cookie cookies[1].value = ‘fr_FR’; print(’\nModified: ${Cookie.toCookieValue(cookies)}’); }
We parse a Cookie header containing multiple name-value pairs. The class provides methods to both parse and serialize multiple cookies in proper HTTP format.
$ dart main.dart session: abc123 lang: en_US theme: dark
Modified: session=abc123; lang=fr_FR; theme=dark
This example shows security-related cookie attributes like SameSite and HttpOnly.
main.dart
import ‘dart:io’;
void main() { var secureCookie = Cookie(‘auth_token’, ‘secret123’);
secureCookie.httpOnly = true; secureCookie.secure = true; secureCookie.sameSite = SameSite.strict; secureCookie.maxAge = 1800; // 30 minutes
print(‘Secure cookie: $secureCookie’);
// For sensitive operations var csrfCookie = Cookie(‘csrf_token’, ‘r4nd0mT0k3n’); csrfCookie.sameSite = SameSite.lax;
print(‘CSRF cookie: $csrfCookie’); }
We configure security flags to protect against XSS and CSRF attacks. HttpOnly prevents JavaScript access, while SameSite restricts cross-site requests.
$ dart main.dart Secure cookie: auth_token=secret123; Max-Age=1800; HttpOnly; Secure; SameSite=Strict CSRF cookie: csrf_token=r4nd0mT0k3n; SameSite=Lax
Security: Always set HttpOnly for session cookies
HTTPS: Use Secure flag for cookies over HTTPS
Expiration: Set reasonable Max-Age or Expires
Sensitive data: Avoid storing sensitive info in cookies
Size limits: Keep cookies under 4KB (browser limits)
This tutorial covered Dart’s Cookie class with examples showing creation, parsing, security features, and HTTP header handling for web development.
My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.
List all Dart tutorials.