[1] [CITE[Hawk's W3 Laboratory : XML : XMLHttpRequestについて]] ([TIME[2009-01-04 12:58:40 +09:00]] 版) > 引数として指定可能なオブジェクトはブラウザ毎に異なりますが、多くのブラウザで少なくとも文字列とDOMDocumentが指定可能なようです。 > 以下は各ブラウザ共通の挙動です。 - 文字列はUTF-8でエンコードされる。Content-Typeヘッダを書き換えて明示的にエンコーディング指定を行っても無効になる(IE/Geckoの場合。Operaではそもそも指定不可)。 - 適切な値のContent-Lengthヘッダが自動的に送信される。 > ブラウザ毎に異なるのはデフォルトの Content-Type の扱いです。 > ,IE(MSXML) ,送信されない ,Gecko ,text/xml ,Opera ,text/xml; charset=utf-8 ,KHTML ,text/plain > IE(MSXML)の挙動はHTTPクライアントとしてどうなんだという気がしますが…もちろんsetRequestHeaderを使って明示的に指定することは出来ます。 ;;[2] [CODE(HTTP)@en[[[Content-Type]]]] は省略可能だから問題はない (ただし[[既定値]]が [CODE(HTTP)@en[[[text/plain]]; [[charset]]=[[iso-8859-1]]]] なのは問題)。 >DOMDocumentを指定した場合、基本的にはDOMDocumentの”文字列表現”が送信されます。以下がその際に用いられる文字エンコーディングと、送信される文字列と同等の文字列を取得するための方法です。 > ,- 文字エンコーディング 文字列表現の出所 ,IE(MSXML) ,XML宣言のencoding指定に従う デフォルトはUTF-8 ,DOMDocumentのxmlプロパティ(推測) ,Gecko ,UTF-8 ,XMLSerializer.serializeToString(DOMDocument) ,Opera ,UTF-8 ,DOMDocument.documentElement.outerHTML(推測) ,KHTML ,UTF-8 ,不明 > Operaが送信するのはルート要素以下らしく、XML宣言などは含まれません。またGecko/KHTML/OperaではHTML DOMDocument(つまり window.document)も指定できます。