1

サーバーで「ë」という値の Cookie を作成すると、クライアント側で読み取ると「ë」になります。

これは IE (10) でのみ発生します。他のブラウザー (Chrome および Firefox) ではこの問題は発生しません。

Cookie の作成方法:

HttpContext.Current.Response.Cookies.Add(new HttpCookie("test", "ë"));
4

1 に答える 1

0

RFC 2109 ( sec. 4.2.2) およびRFC 2616 (sec. 2.2, 4.2) に従って、HTTP ヘッダーは ISO-8859-1 でのみ送信できます。(例外がありますが、これは主に MIME に使用され、HTTP ではほとんど見られません。) ISO-8859-1 は実際には一連のオクテットにすぎないため、サーバーは別のエンコーディング (UTF8、この場合) 必要に応じて、Cookie はクライアントによって不透明に処理されることを意図しているためです。したがって、すべての場合に正しく往復する必要がありますが、クライアントが Cookie を解析しようとすると、RFC に従っているかどうかに基づいて異なる結果が得られます。

可能であれば、非 ASCII 文字をヘッダーに送信しないようにしてください。HTTP 仕様はこれを適切に説明していないため、実際に使用すると痛みや心痛が生じます。:(

于 2013-07-03T14:59:35.753 に答える