web-dev-qa-db-ja.com

ブラウザからすべてのCookieを取得する必要があります

JavaScriptを使用して、ブラウザにすべてのcookiesを保存する必要があります。どうすればできますか?

88
nayagi

特定のサイトのCookieにのみアクセスできます。 document.cookieを使用すると、エスケープされたkey = valueのペアのリストがセミコロンで区切られます。

secret=do%20not%20tell%you;last_visit=1225445171794

アクセスを簡素化するには、文字列を解析し、すべてのエントリをエスケープ解除する必要があります。

var getCookies = function(){
  var pairs = document.cookie.split(";");
  var cookies = {};
  for (var i=0; i<pairs.length; i++){
    var pair = pairs[i].split("=");
    cookies[(pair[0]+'').trim()] = unescape(pair.slice(1).join('='));
  }
  return cookies;
}

だからあなたは後で書くかもしれません:

var myCookies = getCookies();
alert(myCookies.secret); // "do not tell you"
75
aemkei
  1. 他のサイトのCookieは表示できません。
  2. HttpOnly cookiesが表示されません。
  3. 表示されるすべてのCookieは document.cookie プロパティにあります。このプロパティには、name=valueペアのsemicolonで区切られたリストが含まれます。
30
Franci Penov

できません。セキュリティ上の理由から、設計により、サイトで設定されたCookieのみにアクセスできます。 StackOverflowは、UserVoiceによって設定されたCookieやAmazonによって設定されたCookieを見ることができません。

26
PhiLho

ブラウザで開いている現在のドキュメントのすべてのCookieを取得するには、document.cookieプロパティを再度使用します。

12
Codeslayer

タイトルはプログラマティックである必要があることを指定していなかったため、これは真のデバッグ/プライバシー管理の問題であり、ソリューションはブラウザ依存であり、詳細なCookie管理トールおよび/またはデバッグモジュールが組み込まれたブラウザを必要とすると仮定しますプラグイン/拡張機能。そのうちの1つをリストし、他の人に詳細を知っているブラウザーで作成するように依頼します。バージョンについては正確にしてください。

クロム、鉄ビルド(SRWare Iron 4.0.280)

Wrench(tool)メニュー:オプション/フードの下/ [CookieとWebサイトのアクセス許可を表示]関連するドメイン/サイトについては、検索ボックスにサフィックスを入力します(.foo.tvなど)。警告:ノード(サイトまたはCookie)がクリック強調表示されている場合、[削除]のみを使用して特定のサブツリーを削除します。 [すべて削除]を使用しても、検索で選択されたすべてのサイトのCookieが削除され、デバッグセッションが無駄になります。

2
ZXX

モダンなアプローチ。

let c = document.cookie.split(";").reduce( (ac, cv, i) => Object.assign(ac, {[cv.split('=')[0]]: cv.split('=')[1]}), {});

console.log(c);

;)

2
Prabu samvel

オブジェクトのキーにtrim()を追加し、strという名前を付けたため、ここで文字列を処理していることがより明確になります。

export const getAllCookies = () => document.cookie.split(';').reduce((ac, str) => Object.assign(ac, {[str.split('=')[0].trim()]: str.split('=')[1]}), {});
0
Netanel R