2010-10-06 33 views

Trả lời

65

Cookie có ngày hết hạn ngầm hoặc đặt rõ ràng kiểm soát thời gian chúng kéo dài (tùy thuộc vào tác nhân người dùng thực sự thực thi nó). Một cookie có thể chỉ tồn tại trong suốt thời gian của phiên (hoặc một khoảng thời gian ngắn hơn).

Nếu cookie hợp lệ, cookie sẽ được chuyển cùng với yêu cầu HTTP đến tên miền bắt nguồn từ đó. Chỉ có miền đặt cookie mới có thể đọc cookie (mặc dù có nhiều cách để khai thác điều này, chẳng hạn như tập lệnh trên nhiều trang).

  • Nếu bạn muốn có một cookie sẽ hết hạn vào một thời điểm cụ thể, thiết lập một hết hạn ngày nó bằng cách sử dụng client hoặc ngôn ngữ server-side của sự lựa chọn của bạn.

  • Nếu bạn muốn cookie hết hạn khi phiên kết thúc, không đặt ngày hết hạn .

From the RFC (emphasis mine):

Cookie setter có thể chỉ định một ngày xóa, trong trường hợp cookie sẽ được gỡ bỏ vào ngày đó.

Nếu trình đặt cookie không chỉ định một ngày, cookie sẽ bị xóa sau khi người dùng hủy kích hoạt trình duyệt của họ .

Kết quả là, chỉ định ngày là cách để đặt cookie tồn tại trên phiên. Vì lý do này, cookie có ngày hết hạn được gọi là liên tục.

Là một ứng dụng ví dụ, một trang web mua sắm có thể sử dụng dai dẳng cookie để lưu trữ các mặt hàng người dùng đã đặt trong giỏ của họ. (Trên thực tế, cookie có thể tham khảo một mục trong một cơ sở dữ liệu lưu trữ tại trang web mua sắm, không phải trên máy tính của bạn.) Bằng cách này, nếu người dùng từ bỏ trình duyệt của họ mà không khi mua hàng và trở về sau, họ vẫn tìm các sản phẩm tương tự trong giỏ để chúng không phải tìm kiếm lại các chi tiết này . Nếu các cookie này không được cung cấp ngày hết hạn, , chúng sẽ hết hạn khi trình duyệt bị đóng và thông tin về nội dung giỏ sẽ bị mất.

+0

Và nếu tôi chỉ muốn cookie tồn tại trong phiên, tôi nên đặt hết hạn nào? –

+0

Vui lòng xem chỉnh sửa của tôi. –

+0

Cảm ơn! Điều đó có nghĩa là bất kỳ Cookie Cài đặt nào không có điều khoản hết hạn sẽ là cookie phiên và sẽ bị mất sau khi trình duyệt khởi động lại không? Bởi vì đó không phải là những gì tôi thấy ... Một khi tôi làm một Set-Cookie mà không hết hạn, và khởi động lại trình duyệt, tôi vẫn có thể đọc lại cookie đó. Điều đó có được mong đợi không? –

5

Cookie phiên

HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue"); 
Response.Cookies.Add(cookie); 

Cookie với một số thời gian tem (.NET DateTime library)

HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue"); 
cookie.Expires = DateTime.Today.AddMonths(12); //or AddMinutes, or AddHours... 
Response.Cookies.Add(cookie); 

Persistent Cookie

HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue"); 
cookie.Expires = DateTime.MaxValue; 
Response.Cookies.Add(cookie); 
8

Có hai loại cookie trong ASP.NET

Cookie cố định:

Cookie được lưu trữ trên đĩa cứng máy tính của bạn. Chúng nằm trên đĩa cứng của bạn và có thể được truy cập bởi các máy chủ web cho đến khi chúng bị xóa hoặc đã hết hạn.

public void SetPersistentCookies(string name, string value) 
{ 
    HttpCookie cookie = new HttpCookie(name); 

    cookie.Value = value; 

    cookie.Expires = Convert.ToDateTime(“12/12/2008″); 

    Response.Cookies.Add(cookie); 
} 

cookie Non-dai dẳng:

Cookies được lưu chỉ trong khi trình duyệt web của bạn đang chạy. Chúng chỉ có thể được sử dụng bởi máy chủ web cho đến khi bạn đóng trình duyệt. Chúng không được lưu trên đĩa của bạn.

public void SetNonPersistentCookies(string name, string value) 
{ 
    HttpCookie cookie = new HttpCookie(name); 

    cookie.Value = value; 

    Response.Cookies.Add(cookie); 
} 
Các vấn đề liên quan