Cookies
Cookies are used in
state management in web applications to store user-specific information.
A cookie is a small bit
of text that can be read or write using request and response objects. The
cookie contains information the Web application can read whenever the user
visits the site. As the user visits different sites, each site might send a
cookie to the user's browser as well; the browser stores all the cookies
separately. We can use cookies to store user preferences or other information.
When the user visits our Web site another time, the application can retrieve
the information it stored earlier. Cookies stored up to 4096 bytes.
Most browsers allow
only 20 cookies per site; if we try to store more, the oldest cookies are
discarded.
Writing Cookies
Cookies are sent to the
browser via the HttpResponse object that exposes a collection called Cookies. We can access the HttpResponse object as the Response
property of our Page class.
Any cookies that we want to send to the browser must be added to this
collection.We can also set a cookie's date and time expiration.
Response.Cookies["TestCookie"].Value = "TestCookie";
Response.Cookies["TestCookie "].Expires = DateTime.Now.AddDays(1);
HttpCookie demoCookie = new HttpCookie("demoCookie ");
demoCookie.Value = DateTime.Now.ToString();
demoCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(demoCookie);
The example adds two
cookies to the Cookies collection,
one named TestCookie and the other named demoCookie. In first the values
of the Cookies collection are set directly. In second method we creates an
instance of an object of type HttpCookie , sets its properties,
and then adds it to the Cookies collection via the Add method.
Reading Cookies
When a browser makes a
request to the server, it sends the cookies for that server along with the
request. In our ASP.NET applications, we can read the cookies using the HttpRequest object, which is
available as the Request property of our page class.
if(Request.Cookies["TestCookie"] != null)
lblCookie.Text = Server.HtmlEncode(Request.Cookies["TestCookie"].Value);
if(Request.Cookies["TestCookie"] != null)
{
HttpCookie demoCookie = Request.Cookies["TestCookie "];
lblCookie.Text = Server.HtmlEncode(demoCookie.Value);
}
Deleting Cookies
We cannot directly
remove a cookie because the cookie is on the user's computer. However, we can
have the browser delete the cookie for us. The technique is to create a new
cookie with the same name as the cookie to be deleted, but to set the cookie's
expiration to a date earlier than today.
HttpCookie demoCookie = new HttpCookie("demoCookie ");
demoCookie.Value = DateTime.Now.ToString();
demoCookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(demoCookie);
Advantages
1. Cookies do not require any server resources since they are stored on the
client.
2. Cookies are easy to implement.
3. You can configure cookies to expire when the browser session ends (session
cookies) or they can exist for a specified length of time on the client
computer (persistent cookies).
Disadvantages
1. Users can delete a cookie.
2. Users browser can refuse cookie, so your code has to anticipate that
possibility.
3. Cookies exist as plain text on the client machine and they may pose a
possible security risk as anyone can open and tamper with cookies.