クッキー これはクライアント ブラウザの状態を保存するための標準的な方法です。Cookie はブラウザが誕生してすぐに登場したようです。なぜ Cookie が必要なのでしょうか? HTTP プロトコルには状態がないため、クライアント ブラウザとサーバーが通信するときにクライアント ブラウザの現在の状態がわかるように、クライアント ブラウザの現在の状態を記録するフラグ/ストレージが必要です。 Cookie はこの状態を記録するコンテナです。Cookie はリクエストごとにサーバーに返されるため、サーバーはブラウザの現在の状態を把握できます。Cookie はサーバーに返されるため、Cookie の内容は多すぎることはなく、最大でも 4K を超えることはできません。4K 制限の紹介は http://ec.europa.eu/ipg/standards/cookies/index_en.htm をご覧ください。 ブラウザに必要なのは、全体で最大 300 個の Cookie を保存し、各ドメインの最新の 20 個だけを維持することです。Cookie の最大サイズは 4K のディスク領域です。 ただし、シナリオによっては、4K 以上のデータを保存する必要が生じる場合がありますが、このデータはリクエストが行われるたびにサーバーに戻す必要はありません。顧客のブラウザに保存でき、Javascript で簡単に読み書きできる限り、問題ありません。この要求は、中規模および大規模 RIA のアプリケーション シナリオでは特に切実です。帯域幅を節約し、閲覧速度を向上させるために、一部のデータは顧客のブラウザに配置されます。 HTML5 標準では、sessionStorage、webSqlDatabase など、このニーズを満たすソリューションがすでに提供されており、Microsoft の IE には userData ソリューションがあります。
セキュリティ警告:セキュリティ上の理由から、UserData ストアは、ストアを永続化するために使用される同じディレクトリおよび同じプロトコルでのみ使用できます。 UserData は同じディレクトリで同じプロトコルを使用してアクセスでき、クライアント マシンに長期間保存されます。最大ストレージ容量も大幅に増加しました。 UserData は Dom 要素にバインドする必要があります。 userData メソッドには removeAttribute メソッドがあります。コードをテストした後、removeAttribute メソッドはあまり役に立たないことがわかりました。userData 属性を完全に削除するには、cookie 有効期限などのメソッドを使用する必要があります。
この仕様では、クライアント側で構造化データを保存するための、HTTP セッション クッキー [RFC2965] に似た 2 つの関連メカニズムを導入しています。 Html5 セッションストレージ デモ: http://html5demos.com/storage コードをコピー コードは次のとおりです。関数isIE() { !!document.all を返します。 } 関数initUserData() { if (isIE()) document.documentElement.addBehavior("#default#userdata"); } 関数 saveUserData(キー, 値) { var ex; if (isIE()) { //IE (document.documentElement) で試してください { ロード(キー); setAttribute("値", 値); 保存(キー); getAttribute("値"); を返します。 } キャッチ (例) { アラート(例:メッセージ) } } それ以外の場合 (window.sessionStorage) { //FF2.0以降 試す { sessionStorage.setItem(キー、値) } キャッチ (例) { 警告(例); } } それ以外 { alert("ユーザーデータの保存中にエラーが発生しました。お使いのブラウザはユーザーデータをサポートしていません。"); } } 関数loadUserData(キー) { var ex; if (isIE()) { //IE (document.documentElement) で試してください { ロード(キー); getAttribute("値"); を返します。 } キャッチ (例) { アラート(ex.message); nullを返します。 } } それ以外の場合 (window.sessionStorage) { //FF2.0以降 試す { sessionStorage.getItem(キー) を返す } キャッチ (例) { 警告(例) } } それ以外 { alert("ユーザーデータの読み込み中にエラーが発生しました。お使いのブラウザはユーザーデータをサポートしていません。") } } 関数deleteUserData(キー) { var ex; if (isIE()) { //IE (document.documentElement) で試してください { ロード(キー); 有効期限 = new Date(315532799000).toUTCString(); 保存(キー); } キャッチ(例){ アラート(例:メッセージ); } } それ以外の場合 (window.sessionStorage) { //FF2.0以降 試す { sessionStorage.removeItem(キー) } キャッチ (例) { 警告(例) } } それ以外 { alert("ユーザーデータの削除中にエラーが発生しました。お使いのブラウザはユーザーデータをサポートしていません。") } } userData と sessionStorage の共通点は、どちらのオブジェクトも Cookie よりもはるかに多くのコンテンツを保存できることです。また、リクエストごとにサーバーに返されることはありません。しかし、Html5 標準とテストによると、userData と sessionStorage は多くの場所で異なることがわかります。 以下はテストページです: ![]() SetInsurance リンクは、IE では userData、FF では sessionStore を使用してデータを書き込み、JavaScript を操作します。 IE の場合、書き込まれた値は IE を閉じたりマシンを再起動したりしても失われません。 FF の状況は非常に興味深いです。このページに書き込まれた値は、このページおよびこのページによって開かれた他のページからアクセスできます。しかし、このページが開いている場合でも、ナビゲーション バーにアドレスを入力してこのページを開くと、保存された値にアクセスすることはできません。このページに保存されている値は、親ページ(このページを開いたページ)ではアクセスできません。 Html5標準をもう一度調べてみました。 sessionStorage の完全な名前は、クライアント側のセッションと名前/値のペアの永続的なストレージです。これは、クライアントに保存されているコンテンツがセッション関連であり、保存された値がセッションによって維持されることを意味します。セッションが中断または失われると、保存された値は消えます。そのため、ページにセッションがない場合(親ページ、アドレスバーで開いたページ)、値を取得できません。 FF をシャットダウンしたり、マシンを再起動したりすると、必然的に値は取得されなくなります。
W3C より: 「...SQL のバリエーションを使用してクエリできるデータベースにデータを保存するための API」 HTML 5 の SQLDB がブラウザーでどの程度サポートされるかはわかりませんが、sessionStorage は基本的にニーズを満たすことができそうです。 |
>>: nginx サーバーでの 502 不正なゲートウェイ エラーの原因のトラブルシューティング
目次序文プレビュー文章グラフィックコンポーネントプロパティ機能グリッドを描く軸角度を計算するスケール...
<> 演算子機能: 等しくないことを示します。注: 「!=」演算子と同じ機能を持ちますが...
プロセスは CPU とメモリ内で実行されるプログラム コードであり、各プロセスは 1 つ以上のプロセ...
<br />記事と同様に、Web ページにも明確な段落と重要度の異なるタイトルが必要です...
目次序文REDOログの生成REDOログ送信REDOログの保存と通知ユーザースレッドに通知要約する序文...
最近、社内の重要なサーバデータを定期的にストレージにバックアップし、ついでにメモしておきたい以前、W...
MySQL 外部キー制約の無効化と有効化: MySQL 外部キー制約が有効になっているかどうかは、グ...
この記事では、Vueの計算プロパティ実装レポートカードを参考に共有します。具体的な内容は次のとおりで...
序文注: テストデータベースのバージョンはMySQL 8.0ですテーブルを作成し、ユーザー scot...
問題の説明: MySQL に中国語の文字を挿入する場合、または MySQL では中国語の文字が正常に...
目次最初の方法: MySQLデータベースが接続されていない場合2 番目の方法: データベースがすでに...
HTMLハイパーリンクaタグのhrefジャンプとonclickの実行関係htmlのaタグのhrefは...
序文Github にある以前のコードには、CUDA 8.0 環境が必要なものもあります。初心者の場合...
目次はじめるデータストレージサーバーを構成するRedis セキュリティの管理Redisインストールの...
1. IE8 の getElementById は id のみをサポートし、name はサポートしま...