読者です 読者をやめる 読者になる 読者になる

XMLHttpRequestでHTTP DELETE/PUT

JavaScript

「現行ブラウザでhttp DELETE」というエントリを読みました。


僕の経験から言えば、Geckoベースのブラウザでは、XMLHttpRequestを使ってHTTP DELETE/PUTでリクエストを送ることができます。IEでは試していませんが、Operaの最新版でも可能だったような気がします。
SafariXMLHttpRequestは、HTTP DELETE/PUTを正しく扱ってくれず、HTTP PUTとして扱われてしまいます。


MochiKitを使ってHTTP PUTリクエストを送るには、次のような感じで行います。

var req = MochiKit.Async.getXMLHttpRequest();
var method = 'PUT';
req.open(method, url, true);
var deferred = sendXMLHttpRequest(req, data);
deferred.addBoth(some_function);

ただし、POSTやPUTでリソースを作成して、サーバ側がHTTPプロトコルに忠実に、ステータスコード201 Createdを返しても、MochiKitは200以外はエラーと見なしてしまいます。そのため、現行のMochiKitでRESTっぽいクライアントを作る場合は、ステータスコードを自分で判定するようなコールバック関数を書く必要があります。