send()

XMLHttpRequest インターフェイス send メソッド (DOM)

仕様書

歴史

[1] Hawk's W3 Laboratory : XML : XMLHttpRequestについて ( 版) <http://web.archive.org/web/20060901145130/www.hawk.34sp.com/stdpls/xml/xmlhttprequest.html>

引数として指定可能なオブジェクトはブラウザ毎に異なりますが、多くのブラウザで少なくとも文字列とDOMDocumentが指定可能なようです。

以下は各ブラウザ共通の挙動です。

  • 文字列はUTF-8でエンコードされる。Content-Typeヘッダを書き換えて明示的にエンコーディング指定を行っても無効になる(IE/Geckoの場合。Operaではそもそも指定不可)。
  • 適切な値のContent-Lengthヘッダが自動的に送信される。

ブラウザ毎に異なるのはデフォルトの Content-Type の扱いです。

IE(MSXML)送信されない
Geckotext/xml
Operatext/xml; charset=utf-8
KHTMLtext/plain

IE(MSXML)の挙動はHTTPクライアントとしてどうなんだという気がしますが…もちろんsetRequestHeaderを使って明示的に指定することは出来ます。

[2] Content-Type は省略可能だから問題はない (ただし既定値text/plain; charset=iso-8859-1 なのは問題)。

DOMDocumentを指定した場合、基本的にはDOMDocumentの”文字列表現”が送信されます。以下がその際に用いられる文字エンコーディングと、送信される文字列と同等の文字列を取得するための方法です。

-文字エンコーディング文字列表現の出所
IE(MSXML)XML宣言のencoding指定に従う デフォルトはUTF-8DOMDocumentのxmlプロパティ(推測)
GeckoUTF-8XMLSerializer.serializeToString(DOMDocument)
OperaUTF-8DOMDocument.documentElement.outerHTML(推測)
KHTMLUTF-8不明

Operaが送信するのはルート要素以下らしく、XML宣言などは含まれません。またGecko/KHTML/OperaではHTML DOMDocument(つまり window.document)も指定できます。

[3] Refactor send() in terms of Fetch · 82e602e · whatwg/xhr ( ( 版)) <https://github.com/whatwg/xhr/commit/82e602e4507c19802c373bf19f5e956973f1c6c3>

[4] Allow developers to opt-out of sync XHR with feature policy · Issue #178 · whatwg/xhr () <https://github.com/whatwg/xhr/issues/178>

[5] Integrate feature policy by clelland · Pull Request #177 · whatwg/xhr () <https://github.com/whatwg/xhr/pull/177>

[6] Feature proposal: sync-xhr · Issue #126 · WICG/feature-policy () <https://github.com/WICG/feature-policy/issues/126>

[7] Define Content-Type manipulation in terms of MIME Sniffing (annevk著, ) <https://github.com/whatwg/xhr/commit/edc6f8f16f58d201afb49e40ca166b8bc1ae74a3>

[9] Fix send() charset overriding to use new MIME type infrastructure · Issue #188 · whatwg/xhr () <https://github.com/whatwg/xhr/issues/188>

[10] Define Content-Type manipulation in terms of MIME Sniffing by annevk · Pull Request #176 · whatwg/xhr () <https://github.com/whatwg/xhr/pull/176>

[11] Editorial: rewrite send()'s body/content-type processing (domenic著, ) <https://github.com/whatwg/xhr/commit/f47bbab42dabe1f52e5e9f1ed1fa6df06a6eb310>

[12] Editorial: less-confusing content-type manipulation algorithm for send() · Issue #197 · whatwg/xhr () <https://github.com/whatwg/xhr/issues/197>

[13] Editorial: rewrite send()'s body/content-type processing by domenic · Pull Request #205 · whatwg/xhr () <https://github.com/whatwg/xhr/pull/205>