Introduction
Cookies are small pieces of data stored on the client-side by web browsers. They are used to remember information about a user’s session, such as login credentials or preferences, enhancing the browsing experience. In this tutorial, we will explore how to create, read, and erase cookies using both jQuery with a plugin and plain JavaScript.
Managing Cookies with JavaScript
JavaScript provides native support for managing cookies through the document.cookie
property. Let’s dive into creating, reading, and deleting cookies using pure JavaScript.
Creating Cookies
To set a cookie in JavaScript, you can use the following function:
function createCookie(name, value, days) {
let expires = "";
if (days) {
const date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString(); // Use toUTCString for compatibility
}
document.cookie = name + "=" + encodeURIComponent(value) + expires + "; path=/";
}
- name: The name of the cookie.
- value: The value assigned to the cookie. It’s good practice to use
encodeURIComponent
to escape any special characters in the value. - days: Number of days until the cookie should expire. If omitted, the cookie will be a session cookie and will expire when the browser is closed.
Reading Cookies
To retrieve the value of a cookie:
function readCookie(name) {
const nameEQ = name + "=";
const ca = document.cookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) === ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length));
}
return null;
}
- This function searches the document’s cookie string for a specific name and returns its value.
Deleting Cookies
To delete a cookie:
function eraseCookie(name) {
createCookie(name, "", -1);
}
- Setting the expiration date to a past date effectively deletes the cookie.
Managing Cookies with jQuery and js-cookie Plugin
For more convenient handling of cookies in jQuery applications, consider using the js-cookie
plugin. This library simplifies cookie management significantly.
Setup
First, include the js-cookie
library:
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js.cookie.min.js"></script>
Creating Cookies
Using js-cookie
, setting a cookie is straightforward:
Cookies.set("example", "foo"); // Basic usage
Cookies.set("example", "foo", { expires: 7 }); // Expires in 7 days
Cookies.set("example", "foo", { path: '/admin', expires: 7 }); // Custom path and expiration
- The
expires
option specifies the number of days until the cookie should expire. - The
path
option restricts the cookie to a specific URL path.
Reading Cookies
To retrieve a cookie’s value:
alert(Cookies.get("example")); // Displays the value in an alert box
- This method returns the value directly, simplifying access compared to native JavaScript.
Deleting Cookies
Deleting cookies is just as easy:
Cookies.remove("example"); // Basic usage
Cookies.remove('example', { path: '/admin' }); // Specify path if used during creation
Best Practices and Tips
- Security: Always consider the security implications of storing sensitive data in cookies. Use HTTPS to encrypt cookie transmission.
- Expiration: Set expiration dates for cookies to avoid leaving stale data on users’ devices.
- Path and Domain: Be specific with paths and domains when setting cookies, especially if your site has multiple subdomains or complex routing.
Conclusion
Whether you choose plain JavaScript or the js-cookie
library, managing cookies effectively can greatly enhance user experiences on web applications. By understanding how to create, read, and delete cookies, you empower your applications to remember essential information seamlessly.