1. ホーム
  2. javascript

[解決済み] JSでdocument.cookieからクッキーにアクセスできないが、ブラウザはクッキーが存在すると表示する。

2023-06-13 05:18:05

質問

JavaScriptからクッキーにアクセスすることができません。私はいくつかの値を読み取り、私のカスタムチェックのためにJSONを介してそれらを送信する必要があります。

で説明されているように、JSからCookieにアクセスすることを試みました。

コードを見てわかるように、次には水晶のようにクリアに見えます。

var c_value = document.cookie;

にアクセスしようとすると document.cookie の値にアクセスしようとすると、空の文字列が 式を見る :

というわけで、必要なクッキーの値が読めません。

関連する値を取得するために送信しているCookieの名前は正しいことを確認しました。 また、私は W3Schools のソースコードを使用していますが、2番目のリンクから、テクニックは似ています。

どのようにすれば私の問題を解決できますか?

どのように解決するのですか?

あなたが対処しているのは、ほとんどの場合 httponly クッキーを使っています。 httponly は、クッキーに設定できるフラグで、JavaScriptでアクセスできないことを意味します。これは、悪意のあるスクリプトが機密データやセッション全体を含むクッキーを盗むのを防ぐためです。

そのため httponly フラグを無効にするか、あるいはJavaScriptにデータを取り込むための別の方法を見つける必要があります。

あなたのコードを見れば、http onlyフラグを無効にするのは簡単なはずです。

Response.AddHeader("Set-Cookie", "CookieName=CookieValue; path=/;");
Response.SetCookie(new HttpCookie("session-id") { Value = Guid.NewGuid().ToString(), HttpOnly = false });
Response.SetCookie(new HttpCookie("user-name") { Value = data.Login, HttpOnly = false });

これでJavaScriptからCookieの情報にアクセスできるようになりました。しかし、あなたがどのようなデータを取得しようとしているのか正確にはわかりませんので、例えば、クッキーを読み取ろうとする代わりに、必要な情報を持つデータ属性をページ上にレンダリングするなど、別のアプローチを取ることができるかもしれません。

<div id="example" data-info="whatever data you are trying to retrieve"></div>

console.log(document.getElementById('example').getAttribute('data-info'));