2012-06-18 14 views
18

Tôi muốn lưu trữ dữ liệu do người dùng nhấp vào trong cookie mà không bao giờ phải chuyển đến máy chủ. Nó giống như dữ liệu được thêm vào phiên mà tôi muốn tồn tại qua các phiên, như trong dữ liệu chỉ tiếp tục thêm vào cookie và được lưu trữ trong một thời gian dài và chỉ bị xóa khi người dùng xóa lịch sử duyệt web. Cookie là cookie chỉ dành cho khách hàng thuần túy và không bao giờ phải đi máy chủ, vì tôi không cần dữ liệu do người dùng tạo tại máy chủ, vì vậy tôi muốn loại bỏ chi phí bổ sung mà cookie tạo ra khi gửi qua lại giữa trình duyệt và máy chủ. Có thể đạt được điều này không?Cookie chỉ dành cho khách hàng - cookie không bao giờ truy cập vào máy chủ

+0

bạn có thể chỉ cho chúng tôi mã cho những gì bạn đã thử? –

+1

Tùy thuộc vào trình duyệt đích, bạn có thể xem localStorage - http://paperkilledrock.com/2010/05/html5-localstorage-part-one/ – Archer

+0

'localstorage' bị loại trừ, vì tôi cần hỗ trợ các trình duyệt cũ hơn, tất cả những cái chính. Đánh dấu - Tôi đã đạt được tất cả chức năng, ngoại trừ "cookie chỉ dành cho khách hàng thuần túy". Tôi đang tạo cookie với cặp tên - giá trị thích hợp, ngày hết hạn và đường dẫn sử dụng mã mà tôi tìm thấy trên quirksmode. Tôi có thể kiểm soát cookie bằng javascript. Chỉ là tôi không thể đạt được phần "cookie chỉ dành cho khách hàng". Tôi hy vọng bạn có câu hỏi của tôi? –

Trả lời

4

Nếu khả năng tương thích của trình duyệt là một mối lo ngại, bạn có thể sử dụng một số javascript để bao quanh các công nghệ khác nhau khác nhau. Các phiên bản cũ hơn của hỗ trợ IE (giả sử là một phiên bản sở hữu độc quyền của localstorage được gọi là userData (Tôi không nghĩ nó giống hệt nhau, nhưng nên làm những gì bạn cần).

Kịch bản trình bao bọc như http://www.jstorage.info/ hoặc https://github.com/marcuswestin/store.js sẽ làm những gì bạn cần.

+0

Cảm ơn rất nhiều @Bulk, tôi sẽ cung cấp cho một shot. Nhưng cá nhân tôi thích giải pháp cookie độc ​​lập của trình duyệt, trong trường hợp đó, các trường hợp thất bại của tôi sẽ bị giảm xuống còn hai giới hạn kích thước được thực thi trên cookie và cookie bị vô hiệu hóa trên trình duyệt (dữ liệu người dùng/bộ nhớ cục bộ cũng có thể bị vô hiệu hóa tương tự) đoán trường hợp lỗi này có thể bị loại trừ). –

+1

Tôi không thể nói chắc chắn bởi tôi chắc chắn 99% không có giải pháp dựa trên "cookie" này nhưng hãy cứ tiếp tục tìm kiếm :) –

2

Tôi chắc chắn 100% rằng không có cách nào để buộc cookie chỉ là phía máy khách, chúng được gửi đến máy chủ. Tuy nhiên, có thể làm ngược lại: các cookie chỉ phía máy chủ (không thể đọc được bằng javascript) bằng cách đặt cờ HttpOnly trên cookie.

8

Tôi biết có hơi muộn cho bạn, nhưng câu trả lời này là dành cho tất cả những ai có cùng một vấn đề.

1) Với HTML5, bạn có thể sử dụng web storage.

2) (Chỉ là ý tưởng! - không được kiểm tra!) Bạn có thể xác định cookie (thông qua javascript trên máy khách) và đặt thuộc tính "an toàn". Trong trường hợp này, cookie sẽ chỉ được gửi đến máy chủ trên các kết nối HTTPS. Để đảm bảo các tập tin cookie không bao giờ rời khỏi trình duyệt, bạn chỉ cần không bao giờ mở một kết nối HTTPS ;-)

Cập nhật:

Bạn cũng có thể chỉ đơn giản là thiết lập các đường dẫn của cookie để một con đường mà trên thực tế không hiện hữu.

document.cookie="name=value;path=/notExistingPath"; 
+0

Tôi đã có ý tưởng tương tự với 2), nhưng nó không hoạt động. Bạn không thể truy cập các cookie an toàn từ JS (ít nhất không phải trong FF). 1) hoạt động tuyệt vời! – Lodovik

+1

Ồ đúng. Tôi quên truy cập js. Tôi cũng đã cố gắng tìm một giải pháp cho các trình duyệt không hỗ trợ lưu trữ web. Bạn có thể thử đặt giá trị đường dẫn cookie thành đường dẫn không tồn tại. Vì vậy, cookie sẽ không bao giờ được gửi. (không testet. pls thử và trả lời kết quả) –

+0

Không sử dụng 'path =/notExistingPath' nếu bạn muốn cookie của bạn hoạt động trên trình duyệt IE hoặc Edge – amanteaux

0

Sử dụng một con đường không thể thiết lập các cookie:

document.cookie = "cookieName=...; expires=... ; path=/never_reached/ablkappmqlnahsuia";