2

私は2つのウェブサイトhttp://www.example.comhttps://www.example.comを持っています。HTML5セッションストレージを使用してユーザー設定を保存しています。ユーザーがhttp://www.example.comにアクセスし、ajaxを介していくつかのデフォルト設定をロードします。ログインが必要なページを参照し、https ://www.example.com/login.htmlに送信されます。ログインが完了すると、 http://www.example.comに 返送されます。サーバーから新しい設定を取得する必要があります。問題は、httpとhttpsが異なるオリジンであり、セッションストレージを共有できないことです。

私が試したことがうまくいかない:データをクリアするためにsessionStorage.removeItem('key')を実行するだけのiframeにページhttp://www.example.com/clearSession.htmlを ロードしますが、これには独自のブラウジングコンテキストがあるため、機能しません。

私がその仕事を試したが、使いたくないもの: クッキーの使用。httpとhttpsはCookieを共有できるため、これはうまく機能しますが、これは、すべてのユーザー設定がすべてのリソース要求でサーバーに送信されることを意味します。これは通常約4kですが、最大1MBのデータになる可能性があります。いいえ、リソースを別のドメインでホストすることはできません。

設定をキャッシュせず、設定を取得するたびにリクエストを送信してください。古いブラウザはセッションストレージをサポートしていないため、これを行っていますが、ページの読み込みが遅くなり、データベースに余分な負荷がかかります。

4

2 に答える 2

0

この問題をどのように解決したかはお伝えできますが、ローカルの sessionStorage は関係ありません。サーバー側のセッションを使用して、ユーザーが認証サーバーにアクセスして戻ってきた後、ユーザーのログイン データ (ユーザー名、ID など) を保存します。認証される前に、AJAX を使用してこれらの設定をサーバー上の Web サービスに報告し、サーバーのセッション スコープに保存することで、設定データを収集することができます。ただし、これはサーバー側セッションの使用を前提としているため、RESTful モデルを壊します。これは、サーバー言語と Web サービスの設定方法によって異なります。

これは一般的にローカルストレージに設計された制限であるため、常にそのオリジンの問題に遭遇すると思います。

于 2013-04-04T11:12:07.653 に答える