2012-09-15 31 views
5

Tôi đăng nhập vào quản trị django. Khi tôi mở giao diện điều khiển firebug JS và cố gắng in cookie với document.cookie Tôi chỉ nhận được csrftoken cookie. Nhưng khi tôi mở Firefox preferences> Privacy> Delete cookie ... thì tôi có thể thấy sessionid cookie.Tại sao tôi không thể nhận được 'sessionid' ở phía khách hàng?

Làm thế nào để nhận được điều đó ở phía khách hàng?

Trả lời

9

Bạn không thể truy cập các tập tin cookie phiên vì nó là theo mặc định thiết lập để HttpOnly (Bạn có thể thấy nó bằng cách sử Firebug (Resources-> Cookies-> cột HTTP sessionid được kiểm tra))

sao chép từ docs:.

SESSION_COOKIE_HTTPONLY 
Default: True 

Whether to use HTTPOnly flag on the session cookie. 
If this is set to True, client-side JavaScript will not to 
be able to access the session cookie. 

bạn có thể thiết lập: SESSION_COOKIE_HTTPONLY = False trong settings.py của bạn nếu bạn thực sự muốn được tiếp cận với nó từ mã phía khách hàng. Tuy nhiên nó không phải là một thực hành được đề nghị.

+4

Chỉ cần lưu ý rằng lý do mà nó không được khuyến khích thực hành là nếu trang web của bạn bằng cách nào đó dễ bị XSS, thì kẻ tấn công có thể sử dụng điều này để ăn cắp ID phiên. Điều này tất nhiên là không thể nếu ID phiên không được tiếp xúc với đất JS. –

+0

Một lưu ý khác từ tài liệu: "Không có nhiều lý do để bỏ điều này, hoặc: nếu mã của bạn phụ thuộc vào việc đọc cookie phiên từ JavaScript, có thể bạn đang làm sai." – cs01

Các vấn đề liên quan