iframeに表示されるサイト/アプリを作成しています。私は以前に何度もそれをしました、そしてそれは私に過去にたくさんの問題を引き起こしました...主な問題はクロスドメインクッキーがブロックされていることです。
同じルートドメイン名を使用し、document.domainを設定する必要があることはわかっています。しかし、素敵な新しいEU cookie法(それらは不十分です)とブラウザがプライバシーとセキュリティに関して向かっている一般的な方向性を考えると、iframeでセッションcookieを使用することはおそらくますます厄介になるでしょう。ですから、サイトを少し将来性のあるものにするために、Cookieをまったく使用せずに実装したいと思います。
これまでの実装では、クエリ文字列値を設定するだけで、すべてのページに渡されます。これは、ASP.NETのCookieなしのセッション機能と同じようなものだと思います。ただし、これは、誰かが公共のコンピューターを使用している場合、しばらくしてそれを使用している別の人が自分のURL(セッションIDを含む)を見つけてセッションを続行できることを意味します。このサイトは受け入れられない機密データを扱っているので。ASP.NETのCookieなしの機能には、同じ抜け穴があります(これにより、解決策を見つけることについて少し悲観的になります)。
私は.NETで開発していますが、これはすべての環境で一般的な問題である必要があります。
短縮版:
iframe内で実行されているCookieなしのサイトでセッション状態を維持する方法を知っている人はいますか(おそらくいくつかのベストプラクティスも)。ユーザーがブラウザを閉じるときは、セッションを効果的に強制終了する必要があるため、通常のセッションCookieの場合と同様に、ブラウザの履歴リストに情報が表示されないようにする必要があります。
考えられる解決策
私はこれらの線に沿って何かを考えています。しかし、それは最適にはほど遠いです。
- このページは継続的にサーバーにキープアライブajaxリクエストを送信します
- サーバーは、クエリ文字列に格納されているIDの最後のキープアライブ呼び出しでタイムスタンプを更新します
- キープアライブのタイムスタンプが10秒以上経過すると、IDに関連するデータが強制終了され、ユーザーが現在無効になっているIDでURLに再度アクセスすると、「セッションがタイムアウトしました。最初からやり直してください」というメッセージが表示されます。