2008-12-02 33 views
78

Tôi đang sử dụng plugin jQuery Cookie (downloaddemosource code with comments) để đặt và đọc cookie. Tôi đang phát triển trang trên máy cục bộ của mình.Tại sao Chrome bỏ qua cookie jQuery cục bộ?

Mã sau sẽ đặt thành công cookie trong FireFox 3, IE 7 và Safari (PC). Nhưng nếu trình duyệt là Google Chrome VÀ trang là một tệp cục bộ, nó không hoạt động.

$.cookie("nameofcookie", cookievalue, {path: "/", expires: 30}); 

Những gì tôi biết:

  • demo tác phẩm của plugin với Chrome.
  • Nếu tôi đặt mã của mình trên máy chủ web (địa chỉ bắt đầu bằng http: //), nó hoạt động với Chrome.

Do đó, cookie không thành công chỉ cho Google Chrome trên các tệp cục bộ.

Nguyên nhân có thể:

  • Google Chrome không chấp nhận cookie từ các trang web trên ổ cứng (đường dẫn như file: /// C: /websites/foo.html)
  • Something trong plugin implentation khiến Chrome từ chối các cookie như vậy

Có ai xác nhận điều này và xác định nguyên nhân gốc rễ không?

+0

Khi bạn nói bản trình diễn hoạt động, bạn có nghĩa là nếu bạn lưu bản trình diễn vào ổ cứng và truy cập nó như tệp: //? – Greg

+0

Không - chỉ cần truy cập liên kết ở trên bằng Chrome. –

Trả lời

86

Chrome không hỗ trợ cookie cho tệp cục bộ (hoặc, như Peter Lyons đã đề cập, localhost *) trừ khi bạn bắt đầu bằng cờ --enable-cookies. Bạn có thể đọc một cuộc thảo luận về nó tại http://code.google.com/p/chromium/issues/detail?id=535.

* Chrome không hỗ trợ cookie nếu bạn sử dụng địa chỉ IP cục bộ (127.0.0.1) trực tiếp. vì vậy trong trường hợp localhost, đó có thể là giải pháp dễ dàng hơn.

+2

FYI hành vi tương tự cũng dường như có hiệu lực http: // localhost sites –

+0

Đặt tên miền thành IP không hoạt động đối với tôi, nhưng nó hoạt động nếu tôi xóa miền (cục bộ, chúng tôi cần miền để sản xuất) – Tyrsius

1

Một nguyên nhân khác có thể là path: "/", vì bạn không sử dụng URL web thông thường, / có thể không có nghĩa là nhiều - hãy thử mà không đặt đường dẫn.

+0

Suy nghĩ tốt, tuy nhiên '/' là mặc định. Tôi đã thử 'tập tin: /// C: /' nhưng tôi nghĩ rằng đó là vô nghĩa trong bối cảnh này. –

+0

thực sự làm việc cho tôi, cảm ơn. – Orlo

3

tôi đã cùng một vấn đề, hãy thử sử dụng địa chỉ IP của máy chủ cục bộ để thay thế. Ví dụ: "http://127.0.0.1/yoursite/"

2

vui lòng xem Cookies & Google Analytics.

$.cookie("nameofcookie", cookievalue, {path: "/", expires: 30}); 

thay đổi dòng này để

$.cookie("nameofcookie", cookievalue, {*Path:* "/", expires: 30}); 

dự án này làm việc là tốt.

+1

Không chính xác; vỏ bọc không quan trọng. –

+0

Cảm ơn, việc thay đổi trường hợp thành "Đường dẫn" sẽ khắc phục được sự cố của tôi –

5

tôi có một số vấn đề và giải quyết nó giải pháp khủng khiếp này. sử dụng plugin cửa hàng và cookie cùng nhau.

<script src="js/jquery.cookies.2.2.0.js" type="text/javascript"></script> 
<script src="js/jquery.Storage.js" type="text/javascript"></script> 

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 

//get cookies 
var helpFlag=(is_chrome)?$.Storage.get("helpFlag"):$.cookies.get("helpFlag"); 

//set cookies 
if(is_chrome)$.Storage.set("helpFlag", "1");else $.cookies.set("helpFlag", "1"); 

Tôi biết rằng giải pháp hoàn hảo isnt này nhưng làm việc cho tôi

0

Nếu bạn sử dụng chrominum đây là lệnh để kích hoạt cookie địa phương

crôm trình duyệt enable-file-cookie

Đó là điều tương tự cho chrome

Hy vọng điều này sẽ giúp bạn!

2

này đã làm công việc cho tôi:

enter image description here

Nhấp chuột phải vào biểu tượng Chrome của bạn và chọn Properties, tab Shortcut và thêm enable-file-cookie tại cuối cùng của con đường mục tiêu.

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