ChromeがローカルのjQueryCookieを無視するのはなぜですか?


83

私はjQueryCookieプラグイン(ダウンロードデモコメント付きのソースコード)を使用してCookieを設定および読み取ります。ローカルマシンでページを開発しています。

次のコードは、FireFox 3、IE 7、およびSafari(PC)でCookieを正常に設定します。ただし、ブラウザがGoogle Chromeで、ページがローカルファイルの場合は、機能しません。

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

私が知っていること

  • プラグインのデモはChromeで動作します。
  • コードをWebサーバー(http://で始まるアドレス)に配置すると、Chromeで機能します。

したがって、Cookieはローカルファイル上のGoogleChromeでのみ失敗します

考えられる原因

  • Google Chromeは、ハードドライブ上のWebページ(file:/// C:/websites/foo.htmlなどのパス)からのCookieを受け入れません。
  • プラグインの実装に何かがあると、ChromeはそのようなCookieを拒否します

誰かがこれを確認して根本原因を特定できますか?


デモが機能すると言うとき、それをハードドライブに保存して、file://のようにアクセスするかどうかを意味しますか?
グレッグ

いいえ-Chromeで上記のリンクにアクセスするだけです。
ネイサンロング

回答:


94

Chromeは、-enable-file-cookiesフラグで開始しない限り、ローカルファイル(またはPeter Lyonsが述べたようにlocalhost *)のCookieをサポートしていません。あなたはそれについての議論をhttp://code.google.com/p/chromium/issues/detail?id=535で読むことができます

*ローカルIPアドレス(127.0.0.1)を直接使用する場合、ChromeCookieをサポートします。したがって、ローカルホストの場合、これはより簡単な回避策になる可能性があります。


ドメインをIPに設定することは私には機能しませんでしたが、ドメインを削除した場合は機能しました(ローカルでは、本番用のドメインが必要です)
Kyeotic 2012

Mac OSXで、フラグ--enable-file-cookiesを使用してChromeを起動するには、ターミナルコマンドを使用します。'open/ Applications / Google \ Chrome.app/Contents/MacOS/Google \ Chrome --args --enable-file-cookies ' -(またはChrome.appの場所に応じて微調整します)
Peeech 2018


5

私はいくつかの問題を抱えていて、このひどい解決策を解決しました。ストアとCookieプラグインを一緒に使用します。

<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");

私はこれが完璧な解決策ではないことを知っていますが、私にとってはうまくいきます


4

これは私のために仕事をしました:

ここに画像の説明を入力してください

Chromeアイコンを右クリックし、[プロパティ]、[ショートカット]タブを選択して、ターゲットパスの最後に--enable-file-cookiesを追加します。


3

同じ問題が発生しました。代わりにlocalhostのIPアドレスを使用してみてください。たとえば、「http://127.0.0.1/yoursite/」


3

クッキーとグーグルアナリティクスをチェックしてください。

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

この行をに変更します

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

このプロジェクトの作業は問題ありません。


1
おかげで、ケースを「パス」に変更すると問題が解決します
Otto Kanellis 2014年

2

もう1つの考えられる原因は、path: "/"通常のWeb URLを使用して/いないため、おそらくあまり意味がないことです。パスをまったく設定せずに試してください。


良い考えですが、とにかく「/」がデフォルトです。'file:/// C:/'を試しましたが、このコンテキストでは意味がないと思います。
ネイサンロング

0

chrominumを使用する場合、これはローカルCookieを有効にするコマンドです

クロムブラウザ--enable-file-cookies

クロームも同じです

これがお役に立てば幸いです。


0

回避策として、ローカルファイルにアクセスできるTampermonkeyを使用できます(Tampermonkeyスクリプトにローカルhtmページを含める方法は?)このようにして、Tampermonkeyのストレージを使用し、関数GM_getValue(data)および関数によってデータを設定および取得できるようになります。 GM_setValue(data)。これをローカルHTMLページに使用しました。これは、Windowsエクスプローラーのカスタマイズ可能な代替手段として使用しました。

しかし実際には、Yuriの答えからのlocalStorageは完璧に機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.