検索
ホームページウェブフロントエンドjsチュートリアルCookie、ローカル ストレージ、セッション ストレージ

Cookies, Local storage and Session storage

これは、フロントエンドのインタビューの質問シリーズの投稿 #6 です。準備をレベルアップしたい場合、または常に最新情報を入手したい場合は、Frontend Camp へのサインアップを検討してください。


Cookie、ローカル ストレージ、およびセッション ストレージはすべて、クライアント側でデータを保存するために使用されます。これらのメカニズムは、認証トークンや、テーマや個人設定などのクライアントのみの状態を保存する場合に特に役立ちます。 3 つのストレージ タイプはすべて、次の特性を共有しています:

  1. データはキーと値のペアとして保存されます。
  2. すべての値は文字列形式で保存されます。値が文字列でない場合は、保存される前にシリアル化されます。
  3. これらのメカニズムに保存されたデータは、クライアントからアクセスできます (HttpOnly Cookie を除く)。

クッキー

Cookie は大量のデータを保存できません。ストレージの上限はドメインごとに約 4KB です。この制限が存在するのは、ブラウザによってリクエストが行われるたびに Cookie が自動的にサーバーに送信されるためです。過剰なクライアント側データを Cookie に保存すると、ペイロード サイズが増加し、パフォーマンスに悪影響を及ぼします。

Cookie にはどのようなデータを保存する必要がありますか?
Cookie は、認証トークン、セッション ID、分析 ID、および同様の情報など、サーバーに送信する必要があるデータを保存するのに最適です。さらに、Cookie を使用すると、同じドメインまたはサブドメインの異なるタブまたはウィンドウ間でデータを共有できます。

さまざまなフラグを使用して Cookie を構成し、動作を調整したり、セキュリティを強化したりできます。

  • HttpOnly は、クライアント側の JavaScript 経由で Cookie にアクセスできないようにし、XSS 攻撃のリスクを軽減します。
  • maxAge/expires は、Cookie の有効期限を指定します。有効期限が設定されていない場合、Cookie はブラウザを閉じると削除されます。

Cookie フラグについて詳しく知りたいですか?私の LinkedIn 投稿をチェックしてください。

ローカル ストレージやセッション ストレージとは異なり、Cookie は Set-Cookie ヘッダーを使用してサーバーによって設定 (「追加」と読みます) することもできます。

// Set a cookie for the key `token` that `expires` on 1st March 2025.
document.cookie =
  'token=a1-b2-c3; expires=Sat, 1 Mar 2025 23:59:59 GMT; path=/';

// Read all cookies. There's no way to read specific cookies using `document.cookie`.
// You have to parse the string yourself.
console.log(document.cookie); // token=a1-b2-c3

// Delete the cookie with the key `token` by setting an
// expiry date in the past. The value doesn't matter.
document.cookie = 'token=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/';

ローカルストレージ

Cookie とは異なり、localStorage はドメインごとに約 5MB という大幅に大きなストレージ容量を提供します。これは、localStorage が長期データを保存するように設計されているためです。ブラウザが閉じているときでもデータが保持されるため、クライアント側の永続的なストレージのニーズに最適です。

では、localStorage にはどのようなデータを保存すればよいでしょうか?
localStorage は、クライアント側でのみ使用され、リクエストごとにサーバーに送信する必要のないデータの保存に最適です。例としては、Web サイトのテーマや、ユーザーがサインインする前にカートに追加された製品などがあります。

localStorage に保存されたデータは、ユーザーが手動で削除するか、Web サイトが JavaScript を使用してデータを消去するまで無期限に保持されます。

Cookie と同様に、localStorage 内のデータは、同じ生成元のすべてのタブまたはウィンドウからアクセスできるため、ドメイン内のクライアント側の状態を共有するのに役立ちます。

// Set a cookie for the key `token` that `expires` on 1st March 2025.
document.cookie =
  'token=a1-b2-c3; expires=Sat, 1 Mar 2025 23:59:59 GMT; path=/';

// Read all cookies. There's no way to read specific cookies using `document.cookie`.
// You have to parse the string yourself.
console.log(document.cookie); // token=a1-b2-c3

// Delete the cookie with the key `token` by setting an
// expiry date in the past. The value doesn't matter.
document.cookie = 'token=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/';

セッションストレージ

sessionStorage は、有効期間の短いクライアント側データを保存するために使用されます。 localStorage と同様に、ドメインごとに約 5MB のストレージ容量を提供し、同じ API を共有します。

sessionStorage と localStorage はどちらも同様の機能を共有していますが、データ永続性アクセシビリティという 2 つの重要な側面が異なります。
localStorage とは異なり、sessionStorage はタブまたはブラウザを閉じるとデータを保持しません。さらに、sessionStorage に保存されたデータは、そのデータが作成された特定のタブまたはウィンドウに分離されます。つまり、同じオリジンの他のタブまたはウィンドウはアクセスできません。

sessionStorage の使用例は何ですか?
sessionStorage は、単一セッションにのみ必要なデータを保存するのに最適です。たとえば、ユーザーが長いフォームに入力し、誤ってページを更新したとします。フォーム データが sessionStorage に保存されている場合、それは更新中も保持されるため、ユーザーは進行状況を失うことなく続行できます。

ただし、このデータは別のタブからアクセスしたり、タブを閉じるとアクセスできなくなることに注意してください。

// Set a value in localStorage.
localStorage.setItem('theme', 'dark');

// Get a value from localStorage.
console.log(localStorage.getItem('theme')); // 'dark'

// Remove a value from localStorage.
localStorage.removeItem('theme');

// Clear all data in localStorage.
localStorage.clear();

Cookie はブラウザーによって送信されるすべてのリクエストに自動的に含まれますが、localStorage または sessionStorage に保存されているデータは、カスタム コードを記述することでサーバーに手動で送信できます。


まとめ

  1. Cookie、localStorage、sessionStorage は、クライアント側にデータを保存するために使用されます。
  2. Cookie は、Set-Cookie 応答ヘッダーを使用してサーバーによって設定できる唯一のストレージ形式です。
  3. Cookie はリクエストごとに自動的にサーバーに送信されます。
  4. localStorage と sessionStorage は、Cookie (4KB) に比べて非常に大きなストレージ (5MB) を持っています。これらのストレージはどちらも同じ API インターフェイスを共有します。
  5. Cookie には有効期限があり、有効期限がない場合はブラウザを閉じると消去されます。
  6. localStorage データは、ユーザーまたは Web サイト自体が手動で消去しない限り、無期限に存続します。
  7. sessionStorage データは、セッションの終了後、つまりタブまたはウィンドウが閉じられたときにクリアされます。

今読んだ内容は気に入りましたか?フロントエンド キャンプをチェックしてみてください ✌️

以上がCookie、ローカル ストレージ、セッション ストレージの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptのデータ型:ブラウザとNodejsに違いはありますか?JavaScriptのデータ型:ブラウザとNodejsに違いはありますか?May 14, 2025 am 12:15 AM

JavaScriptコアデータ型は、ブラウザとnode.jsで一貫していますが、余分なタイプとは異なる方法で処理されます。 1)グローバルオブジェクトはブラウザのウィンドウであり、node.jsのグローバルです2)バイナリデータの処理に使用されるNode.jsの一意のバッファオブジェクト。 3)パフォーマンスと時間の処理にも違いがあり、環境に従ってコードを調整する必要があります。

JavaScriptコメント://および / * *を使用するためのガイドJavaScriptコメント://および / * *を使用するためのガイドMay 13, 2025 pm 03:49 PM

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

Python vs. JavaScript:開発者の比較分析Python vs. JavaScript:開発者の比較分析May 09, 2025 am 12:22 AM

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

Python vs. JavaScript:ジョブに適したツールを選択するPython vs. JavaScript:ジョブに適したツールを選択するMay 08, 2025 am 12:10 AM

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScript:それぞれの強みを理解するPythonとJavaScript:それぞれの強みを理解するMay 06, 2025 am 12:15 AM

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

JavaScriptのコア:CまたはCの上に構築されていますか?JavaScriptのコア:CまたはCの上に構築されていますか?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptアプリケーション:フロントエンドからバックエンドまでJavaScriptアプリケーション:フロントエンドからバックエンドまでMay 04, 2025 am 12:12 AM

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

Python vs. Javascript:どの言語を学ぶべきですか?Python vs. Javascript:どの言語を学ぶべきですか?May 03, 2025 am 12:10 AM

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)