6

If-Modified-SinceIE9 によって渡されたこの奇妙なヘッダーを明確にしてください

私の ASP.NET 4.0 Web アプリには、DB に格納された画像を提供する汎用ハンドラー (.ashx) があります。効率を高めるために、いくつかのキャッシュ関連のヘッダーを処理し、キャッシュ情報を渡します。

If-Modified-Since通常はIE9から、ヘッダーの内容を解析しようとすると、DateTime解析エラーが適度に頻繁に発生します。次のようなものを送信していることがわかります。

2011 年 11 月 28 日月曜日 16:34:52 GMT; 長さ=8799

正規表現を使用して最後の部分を取り除くことでそれを処理しています。しかし、私は興味があります: それはどのくらいの長さを指していて、どのような用途があるのでしょうか? 要求された URL のキャッシュされたデータのサイズですか?

4

2 に答える 2

1

これは、ヘッダーフィールドの古いNetscape拡張機能のようです(http-wgに関する古い議論を参照してください)。実際にはHTTP/1.0HTTP/1.1の両方の仕様に反しているように見えますが(アイデアは(機能的に)ETagヘッダーに置き換えられました)。IE9がそれを送信するかどうか、なぜ送信するのか、どのような特定の条件下で送信するのかはわかりません(キャッシュヘッダーの特定の組み合わせのみがトリガーされると思います)。

最善の解決策は、セミコロンの後に何かをドロップすることだと思います。これは通常、HTTPでヘッダーの拡張パラメーターを区切るために使用されます(たとえば、Acceptヘッダーを参照)。

于 2012-09-27T20:02:43.427 に答える
1

Squid プロキシ メーリング リストの古い投稿によると:

If-Modified-Since への長さパラメータは、HTTP/1.0 の Netscape 拡張であり、ドキュメントが 1 秒間に 2 回更新された場合に If-Modified-Since の精度を向上させることを目的としています。

HTTP/1.1 は、ETag ヘッダーと If-None-Match を介してより良い方法で同じ問題を解決しました。

私は、IE がこの拡張機能をある時点で適応させ、そのまま残したと推測しています。

于 2012-09-27T20:06:13.967 に答える