2010-04-07 1 views
8

Đây là câu hỏi phỏng vấn được hỏi cách đây một tháng ....Sử dụng cookie phiên?

Sử dụng cookie phiên? Nếu vậy, làm thế nào để họ làm như vậy?

Giả sử Session["UserId"]=1 biến phiên này sử dụng cookie trong nội bộ như thế nào? Nếu vậy, tên của cookie là gì và giá trị của cookie đó là gì?

Trả lời

10

Trong khi dữ liệu tự lưu trữ trên máy chủ (hoặc trong SQL nếu được định cấu hình theo cách đó), cần phải có cách để kết hợp dữ liệu phiên với người dùng cụ thể.

Theo mặc định, việc này được thực hiện bằng cookie, nhưng bạn có thể định cấu hình không có cooki trong trường hợp id duy nhất được lưu trữ trong URL.

Từ Microsoft:

ASP duy trì trạng thái phiên bằng cách cung cấp cho khách hàng với một chìa khóa duy nhất được gán cho người dùng khi phiên giao dịch bắt đầu. Khóa này được lưu trữ trong một cookie HTTP mà máy khách gửi đến máy chủ theo từng yêu cầu. Sau đó, máy chủ có thể đọc khóa từ cookie và tăng lại trạng thái phiên máy chủ.

http://msdn.microsoft.com/en-us/library/ms972429.aspx

+0

Bài viết đề cập đến gần như mọi chi tiết. ID phiên phải được chuyển giữa trình duyệt và máy chủ, vì vậy IIS/ASP.NET có thể biết đối tượng phiên nào cần được sử dụng cho một yêu cầu nhất định. –

+0

Kiểm tra [this] (http://stackoverflow.com/questions/6353703/session-cookie-some-misunderstandings) – Jibin

-8

không, được lưu trữ trên máy chủ ở đâu đó trong thư mục tmp. phiên là serverside, cookie là phía khách hàng.

+1

Cookie là phương pháp mặc định để gắn id phiên của người dùng với dữ liệu phiên trên máy chủ. –

+0

trong phiên php được lưu trữ trên máy chủ. tôi đã không nhận ra đây là asp. lỗi của tôi. – luckytaxi

+1

Bạn nói đúng rằng biến thực sự được lưu trữ trên máy chủ (mặc dù bạn có thể cung cấp một nhà cung cấp trạng thái phiên khác), nhưng như Michael Shimmins chỉ ra, mã thông báo phiên được lưu trữ trong cookie theo mặc định. – R0MANARMY

1

Mỗi phiên sẽ có SessionID. Và ID phiên là một số duy nhất, máy chủ gán cho một người dùng cụ thể, trong khi truy cập (phiên). Và mặc định, ID phiên được đính kèm với một cookie và cookie này sẽ được chia sẻ từ máy khách đến máy chủ (và máy chủ đến máy khách) trong các yêu cầu/phản hồi của nó. Và máy chủ sẽ xác định phiên dựa trên id phiên được truy xuất từ ​​cookie.

Và liên quan đến cookieless, nếu trình duyệt của bạn không hỗ trợ cookie hoặc vô hiệu hóa, sau đó cookieless sẽ được sử dụng. Vì nó là Cookieless, asp.net không thể tạo một cookie để lưu id phiên. Thay vào đó, id phiên sẽ được chuyển trong chuỗi truy vấn ...