Working with Cookies in JavaScript

Cookies are small pieces of data stored on the client-side (browser) that websites can use to remember information about users. They are essential for maintaining user sessions, preferences, and other data across multiple visits or pages.

What is a Cookie?

A cookie is a key-value pair stored by the browser. It consists of:
Name: The identifier of the cookie.
Value: The data stored.
Attributes: Optional settings like expiration, path, domain, and security flags.

Why Use Cookies?

  • Persistence: Data remains even after the browser is closed.
  • Lightweight: Small data size reduces network load.
  • Client-side Storage: No server resources needed to store data.

Creating Cookies

To create a cookie, use the document.cookie property and assign a string in the format:
name=value;expires=Date;path=path;domain=domain;secure=boolean

Example: Setting a Cookie

function setCookie(name, value, days) {
  const date = new Date();
  date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
  const expires = `expires=${date.toUTCString()}`;
  document.cookie = `${name}=${value};${expires};path=/`;
}

// Usage
setCookie('username', 'JohnDoe', 7);

Reading Cookies

To read cookies, access document.cookie, which returns a string of cookies separated by semicolons.

Example: Reading All Cookies

function getCookie() {
  const cookies = document.cookie.split(';');
  const cookieObj = {};
  cookies.forEach(cookie => {
    const [name, value] = cookie.trim().split('=', 2);
    cookieObj[name] = value;
  });
  return cookieObj;
}

// Usage
const cookies = getCookie();
console.log(cookies.username); // Output: JohnDoe

Updating Cookies

To update a cookie, reassign it with the same name but a new value and updated attributes.

Example: Updating a Cookie

// Update the username cookie
setCookie('username', 'JaneDoe', 7);

Deleting Cookies

To delete a cookie, set its expiration date to a past date.

Example: Deleting a Cookie

function deleteCookie(name) {
  document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/`;
}

// Usage
deleteCookie('username');

Cookies vs localStorage

  • Scope: Cookies are sent with every HTTP request, while localStorage is client-side only.
  • Size: Cookies have a size limit (typically 4KB), while localStorage can store up to 5MB.
  • Security: Cookies can be marked as secure and HTTP-only, making them more secure than localStorage.

Security Considerations

  • Secure Flag: Ensure cookies are marked as Secure to prevent transmission over insecure networks.
  • HTTP-Only Flag: Prevent JavaScript access to sensitive cookies to mitigate XSS attacks.
  • SameSite Attribute: Control how cookies are sent with cross-site requests to prevent CSRF attacks.

Frequently Asked Questions

Q1: How do I read a specific cookie?

Use the getCookie function and access the desired cookie by name.

Q2: Can I store objects in cookies?

Yes, but you must stringify them. For example:

const user = { name: 'John', age: 30 };
setCookie('user', JSON.stringify(user), 7);

Q3: How do I handle expired cookies?

Expired cookies are automatically deleted by the browser.

Q4: Are cookies supported in all browsers?

Yes, all modern browsers support cookies. However, users can disable cookies in their settings.

Conclusion

Cookies are a fundamental part of web development, enabling websites to maintain user sessions and preferences. By understanding how to create, read, update, and delete cookies, you can enhance user experience and security in your applications.

Remember to use cookies judiciously, respecting user privacy and security best practices.

Index
Scroll to Top