Cookie に保存したい大きな文字列がありますが、Cookie ごとの最大文字列長と最大 Cookie 数のベスト プラクティスがわかりません。
文字列を分割し、後で一連の Cookie を結合するには、どのロジックを使用すればよいですか?
(Microsoft ADFS とおそらく Siteminder はこの手法を行っているので、その実装に興味があります)
Cookie に保存したい大きな文字列がありますが、Cookie ごとの最大文字列長と最大 Cookie 数のベスト プラクティスがわかりません。
文字列を分割し、後で一連の Cookie を結合するには、どのロジックを使用すればよいですか?
(Microsoft ADFS とおそらく Siteminder はこの手法を行っているので、その実装に興味があります)
Cookie はブラウザが処理するものであるため、ブラウザごとに制限が異なります。
各サイトの合計 Cookie データにも制限があるため、Cookie の分割は一時的なものにすぎませんが、各ページのデータ転送にオーバーヘッドが追加されます。
Cookie ごとの各ブラウザーの制限:
Internet Explorer は、約 3904 バイトの
最大 Cookie を処理します Mozilla Firefox は、約 3136 バイトの最大 Cookie を処理します
Chrome でいくつかのテストを行うと、大きな Cookie で内部で Chrome がクラッシュし、ページの近くにメッセージが表示されません。
現在、Netscape と Microsoft の両方が、RFC 2109 の総 Cookie 数の制限に基づいて Cookie の数を 300 に制限する対策を講じて
います。参照: http://www.cookiecentral.com/faq/#2.5
そのうちの 1 つはハッキングであり、Cookie に完全なビデオをアップロードしてアップロードするサイトをイメージングし、それでハードディスクをいっぱいにします...
ベスト プラクティスは、ブラウザーに小さな Cookie 参照を保持し、それをサーバー上の実際のデータに接続することです。小さいほど、あらゆる面で優れています。
Cookie のテストを作成する方法は、そのようなコードを作成できます。
if(Request.Cookies["cookieTest"] == null)
Request.Cookies["cookieTest"].Value = "more text into cookie";
else
Request.Cookies["cookieTest"].Value += "more text into cookie";
// check now the size
Responce.Write(Request.Cookies["cookieTest"].Value.Length);
私の経験では、Cookie で制御されていない大規模なデータを使用しようとすると、予期せぬ問題がランダムに発生することがよくあります。私はサポートが言うことを何度も聞いています: Cookie をクリアして、もう一度やり直してください :)