Cookie là một đoạn văn bản mà một Web server có thể lưu trên ổ cứng của người dùng. Cookie cho phép một website lưu các thông tin trên máy tính của người dùng và sau đó lấy lại nó. Các mẩu thông tin sẽ được lưu dưới dạng cặp tên – giá trị (name-value).
Nếu sử dụng Internet Explorer của Microsoft để duyệt web, bạn có thể thấy tất cả các cookie được lưu trên máy tính của mình. Địa điểm mà chúng thường cư trú là trong thư mục có tên c:\windows\cookies. Khi quan sát thư mục đó trên máy tính cua mình, bạn sẽ thấy rất nhiều file. Mỗi file là một file văn bản có chứa các cặp tên – giá trị và có một file cho mỗi một website đã đặt cookie trên máy tính của bạn.
Bạn có thể thấy trong thư mục, các file này đều rất đơn giản, chúng là các file văn bản thông thường. Bạn có thể thấy website nào đã đặt file lên máy tính của mình bằng cách quan sát tên file (thông tin cũng được lưu bên trong file). Bạn có thể mở mỗi file bằng cách kích vào nó.
1) Dữ liệu cookie được truyền tải như thế nào?
Như những gì các bạn thấy trong phần trước, dữ liệu cookie đơn giản là các cặp name-value được website lưu trên ổ cứng của bạn. Đó là tất cả dữ liệu về cookie. Các website lưu dữ liệu và sau đó nó lấy lại dữ liệu này. Một website chỉ có thể nhận dữ liệu mà nó đã lưu trên máy tính của bạn. Nó không thể nhòm ngó cookie khác hoặc bất cứ thứ gì trong máy tính của bạn.
Dữ liệu được truyền tải như sau:
– Nếu bạn đánh URL của một website nào đó vào thanh địa chỉ, trình duyệt sẽ gửi một yêu cầu đến website. Ví dụ, nếu bạn nhập URL https://diendanhocweb.com vào trình duyệt, trình duyệt sẽ liên hệ với máy chủ của Quản trị mạng và yêu cầu trang chủ của nó.
– Khi trình duyệt thực hiện công việc này, nó sẽ tìm kiếm trong máy tính của bạn file cookie mà diễn đàn học web đã thiết lập. Nếu nó tìm thấy file cookie của diễn đàn học web thì trình duyệt sẽ gửi đi tất cả các cặp name-value trong file tới máy chủ của diễn đàn học web với URL. Nếu nó không tìm thấy, nó sẽ không gửi dữ liệu cookie.
– Web server của diễn đàn học web sẽ nhận dữ liệu cookie và yêu cầu cho trang chủ. Nếu cặp nó nhận được các cặp name-value thì diễn đàn học web có thể sử dụng chúng.
– Nếu không có cặp name-value nào được nhận, diễn đàn học web biết rằng đây là lần đầu tiên bạn truy cập vào website này. Máy chủ của nó sẽ tạo một ID mới cho bạn trong cơ sở dữ liệu của diễn đàn học web và sau đó gửi các cặp name-value đến máy tính của bạn trong header cho trang web mà nó sẽ gửi đi. Máy tính của bạn sẽ lưu lại các cặp name-value này trên ổ cứng của mình.
– Web server có thể thay đổi cặp name-value hoặc bổ sung các cặp mới bất cứ khi nào bạn truy cập vào site và yêu cầu trang.
Có nhiều mẩu thông tin khác mà máy chủ có thể gửi với cặp name-value. Một trong số đó là ngày hết hạn expiration date. Khác nữa là đường dẫn path (để site có thể liên kết với các giá trị cookie với các phần khác của nó).
Bạn có thể điều khiển quá trình này. Có thể thiết lập tùy chọn trong trình duyệt của mình để trình duyệt báo tin cho bạn mỗi khi site gửi các cặp name-value đến. Sau đó bạn có thể chấp nhận hoặc từ chối các giá trị này.
2) Các website sử dụng cookie như thế nào?
Cookie được mở ra vì chúng giải quyết một vấn đề lớn cho người thực thi website. Trong cảm nhận rộng nhất, một cookie cho phép một site có thể lưu các thông tin về trạng thái trên máy tính của bạn. Thông tin này cho phép một website có thể nhớ trạng thái của trình duyệt của bạn là gì. ID là một mẩu thông tin trạng thái – nếu một ID tồn tại trên máy tính của bạn, site biết rằng bạn đã truy cập vào nó trước đó. Trạng thái là, “Trình duyệt của bạn đã truy cập vào site ít nhất một lần” và site biết ID từ lần truy cập đó.
Các website sử dụng cookie theo nhiều cách khác nhau. Đây là một số trường hợp được sử dụng nhiều:
– Site có thể xác định một cách chính xác số lượng người truy cập site. Chỉ có một cách để site có thể đếm chính xác số lượng khách truy cập là thiết lập một cookie với một ID duy nhất cho mỗi khách. Sử dụng cookie, các site có thể xác định:
-
- Có bao nhiêu khách truy cập đến
- Có bao nhiêu khách truy cập mới và khách truy cập lặp lại.
- Tần suất một khách truy cập vào trang.
Cách một website có thể thực hiện điều này là bằng sử dụng cơ sở dữ liệu. Lần đầu khi một khách truy cập đến, site sẽ tạo một ID mới trong cơ sở dữ liệu và gửi ID dưới dạng một cookie. Lần sau khi người dùng này truy cập trở lại, site có thể tăng số đếm có liên quan với ID trong cơ sở dữ liệu và biết số lần khách truy cập vào trang.
– Site có thể lưu các sở thích người dùng để thể tạo sự khác biệt giữa các khách truy cập (có thể nói website cho phép bạn có khả năng tùy chỉnh). Cho ví dụ, nếu bạn truy cập msn.com, nó sẽ cung cấp cho bạn khả năng thay đổi nội dung, giao diện và màu sắc. Nó cũng cho phép bạn nhập vào zip code và có thể nhận được các thông tin về dự báo thời tiết theo khu vực. Khi bạn nhập vào zip code, gặp giá trị name-value sau sẽ được thêm vào file cookie của MSN.
WEAT CC=NC%5FRaleigh%2DDurham®ION= www.msn.com/
3) Cookies trong ASP Classic
3.1) Tạo cookies lưu thông tin đơn giản
+ Tạo cookies đơn giản thông qua đối tượng Response bao gồm Key, Expires được thiết lập như sau:
<%
Response.Cookies(key)=value
Response.Cookies(key).Expires=timeAlive
%>
+ Truy xuất thông tin cookies đơn giản thông qua đối tượng Request bao gồm Key được thiết lập như sau:
<%
Dim fName
fName=Request.Cookies(key)
%>
Ví dụ: Lưu lại tên người dùng Alex đến tháng May 1,2017
<%
Response.Cookies("firstname")="Alex"
Response.Cookies("firstname").Expires= #May 1,2017 #
%>
Gọi lấy ra tên người dùng như sau:
<%
Dim fName
fName = Request.Cookies("firstname")
Response.Write("Firstname=" & fName )
%>
Kết quả: Firstname=Alex
3.2) Lưu đối tượng thông qua cookies
Ví dụ:
Tạo cookies
<%
Response.Cookies("user")("firstname")="John"
Response.Cookies("user")("lastname")="Smith"
Response.Cookies("user")("country")="Norway"
Response.Cookies("user")("age")="25"
%>
Đọc cookies
<%
Response.Write(Request.Cookies("user")("firstname")&"<br/>")
Response.Write(Request.Cookies("user")("lastname")&"<br/>")
Response.Write(Request.Cookies("user")("country")&"<br/>")
Response.Write(Request.Cookies("user")("age"))
%>
Kết quả:
John
Smith
Norway
25
3.3) Lấy tất cả cookies hiện có trên hệ thống
Tất cả cookies hệ thống được lưu trong đối tượng Request.Cookies
Ví dụ: Đọc tất cả cookies hiện có trên hệ thống
<!DOCTYPE html>
<html>
<body>
<%
Dim x,y
For Each x in Request.Cookies
if Request.Cookies(x).HasKeys then //Cookies dạng object
For Each y in Request.Cookies(x)
Response.Write(Request.Cookies(x)(y))
Next
Else //cookies dạng property
Response.Write(Request.Cookies(x))
End If
Next
%>
</body>
</html>