質問

大きな文字列を 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 をクリアして、もう一度お試しください:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top