Many traditional computer systems communicate with each other using web-based communication protocols such as hypertext transfer protocol (HTTP). HTTP may function as a request-response protocol in a client-server computing model. For example, a web browser may be the client and an application running on a computer hosting a web site may be the server. The client submits an HTTP request message to the server. The server, which provides resources such as HTML files and other content, or performs other functions on behalf of the client, returns a response message to the client. The response contains completion status information about the request and may also contain requested content in its message body.
However, the request-response protocol defined by HTTP is a stateless communication protocol. That is, an HTTP server does not retain information or status about each user for the duration of multiple requests. However, some web applications implement states or server side sessions using cookies, for example. A cookie, also known as an HTTP cookie, web cookie, or browser cookie, may be in some circumstances a small piece of data sent from a website and stored in a user's web browser while a user is browsing a website. When the user browses the same website in the future, the data stored in the cookie can be retrieved by the website to notify the website of the user's previous activity.
Cookies were designed to be a reliable mechanism for websites to remember the state of the website or activity the user had taken in the past. This can include a record of clicking particular buttons, a record of logging in, or a record of which pages were visited by the user even months or years ago.