Tại sao Chrome bỏ qua cookie jQuery cục bộ?


83

Tôi đang sử dụng plugin jQuery Cookie ( tải xuốngdemomã nguồn có nhận xét ) để đặt và đọc cookie. Tôi đang phát triển trang trên máy cục bộ của mình .

Đoạn mã sau sẽ thiết lập 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à tệp cục bộ , nó không hoạt động.

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

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

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

Vì vậy, cookie chỉ không thành công đối với 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 (các đường dẫn như tệp: /// C: /websites/foo.html)
  • Một cái gì đó trong việc cài đặt plugin khiến Chrome từ chối các cookie như vậy

Bất cứ ai có thể xác nhận điều này và xác định nguyên nhân gốc rễ?


Khi bạn nói bản demo hoạt động, ý bạn là nếu bạn lưu nó vào ổ cứng và truy cập nó như file: //?
Greg

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

Câu trả lời:


94

Chrome không hỗ trợ cookie cho các tệp cục bộ (hoặc, như Peter Lyons đã đề cập, localhost *) trừ khi bạn khởi động nó bằng cờ --enable-file-cookies. Bạn có thể đọ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 trực tiếp địa chỉ IP cục bộ (127.0.0.1). vì vậy trong trường hợp localhost, đó có thể là một cách giải quyết dễ dàng hơn.


Thiết lập tên miền vào IP không làm việc cho tôi, nhưng nó làm việc nếu tôi loại bỏ tên miền (địa phương, chúng ta cần lĩnh vực phục vụ sản xuất)
Kyeotic

Trên Mac OSX để khởi động Chrome với cờ --enable-file-cookies, hãy sử dụng kết hợp đầu cuối: 'open / Applications / Google \ Chrome.app/Contents/MacOS/Google \ Chrome --args --enable-file-cookies' - (hoặc chỉnh sửa nó theo vị trí Chrome.app của bạn)
Pefining


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 đây không phải là giải pháp hoàn hảo nhưng phù hợp với tôi


4

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

nhập mô tả hình ảnh ở đây

Nhấp chuột phải vào Biểu tượng Chrome của bạn và chọn Thuộc tính, tab Lối tắt và thêm --enable-tệp-cookie ở cuối đường dẫn đích.


3

Tôi gặp sự cố tương tự, hãy thử sử dụng địa chỉ IP của localhost thay thế. Ví dụ: "http://127.0.0.1/yoursite/"


3

vui lòng kiểm tra Cookie & Google Analytics .

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

thay đổi dòng này thành

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

dự án này hoạt động tốt.


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

2

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


Ý nghĩ tốt, nhưng dù sao '/' vẫn là mặc định. Tôi đã thử 'file: /// C: /' nhưng tôi nghĩ điều đó vô nghĩa trong ngữ cảnh này.
Nathan Long

0

Nếu bạn sử dụng chrominum, đây là lệnh để bật cookie cục bộ

chromium-browser --enable-file-cookies

Chrome cũng vậy

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


0

Cách giải quyết khác là bạn có thể sử dụng Tampermonkey với quyền truy cập vào các tệp cục bộ ( Làm thế nào để đưa các trang htm cục bộ vào tập lệnh Tampermonkey? ) Bằng cách đó, bạn sẽ sử dụng bộ nhớ của Tampermonkey và sẽ có thể đặt và lấy dữ liệu của bạn bằng các hàm GM_getValue (dữ liệu) và GM_setValue (dữ liệu). Tôi đã sử dụng nó cho trang HTML cục bộ của mình, mà tôi đã sử dụng làm trang thay thế có thể tùy chỉnh cho Windows Explorer

Nhưng thực sự localStorage từ câu trả lời của Yuri hoạt động hoàn hảo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.