0

私は、POSTメソッドを受け取るサービス(休憩中)を実装しています。クライアントがhttp content-typeヘッダーフィールドに文字セットを指定するのに間違っていますか?

私のシステムのエンコーディングはUTF-8です。明示的なcharsetパラメータが送信者によって提供されていない

、メディア:要求を受信するサーブレットがそれを述べrfc2068HTTP 1.1仕様に追従する私は、JBoss 5を使用してい

、 「テキスト」タイプのサブタイプは、HTTPを介して受信されたときにデフォルトの文字セット値が「ISO-8859-1」と定義されています。そう

私のサービスを呼び出すクライアントは、例えば、UTF-8のために使用され、文字セットを指定していない、とPOSTのボディがUS-ASCII以外の文字が含まれている、のJBossサーブレットは「ISOを想定しています"-8859-1"と "間違った"改変を行い、私のシステムでは "壊れた"文字を受け取る。たとえば、文字列 "día"の代わりに "dÂa"が表示されます。

私は私のシステムは、コンテンツタイプパラメータに文字セットを指定するには、クライアントを必要とすることで、「保護」が見つかりアプローチ。文字セットが指定されていない場合、http 403と「文字セット値を指定する必要がある」というテキストで応答します。

この方法に問題はありますか?

+0

クライアントが 'Content-Type:text/plain;を送信するとどうなりますか? charset = ISO-8859-1'と 'UTF-8'の本文はありますか? –

+0

@ルーク私はその場合、あなたは私よりも守備的なアプローチを取らなければならないと思います。おそらく体を調べる。 [この投稿](https://stackoverflow.com/questions/499010/java-how-to-determine-the-correct-charset-encoding-of-a-stream)をご覧ください。 –

答えて

2

RFC 2068は2回廃止されており、実際には無関係です。もうデフォルトを定義していないRFC 7231を見る必要があります。つまり、デフォルトはメディアタイプの定義によって管理されます。

これはUS-ASCII(私が覚えている限り)を意味するため、ASCII以外の文字を送信するクライアントは本当に文字セットを指定する必要があります。

+0

はい、私はあなたが言及したRFC 7231と[rfc2046 section-4.1.2](https://tools.ietf.org/html/rfc2046#section-4.1.2)を見てみました。 text/plain "について述べています... charsetパラメータがないと仮定しなければならないデフォルトの文字セットは、US-ASCIIです。" –

関連する問題