WebTecNote

[js]Ajax.Requestと405 Method Not Allowed

405エラーは主に、POSTメソッドの使用が許されていない場所で、POSTメソッドを使用した場合に返される。
さくらインターネット等、CGIやSSI等のダイナミックコンテンツにしかPOSTメソッドが容認されていない場合に、
AjaxでXMLHttpRequestメソッド使った時にタイプがPOSTだと405 Method Not Allowedになる。

CGIでも.htaccessにAddHandler cgi-script .cgi などが記述されておらず、
CGIとして設定されていない状態でPOSTで送ると同じエラーになる。

Apache1.3系は静的ファイルにPOSTが使えない。
Apache2系はPOSTもGETも同じ挙動。

解決策
XMLHttpRequestメソッドのタイプをPOSTからGETに変更

※.htaccessでAddHandler server-parsed .htmlとするのは良くない。

Ajax.Request Samples

以下フレームワークは全てデフォルトがPOSTなので、GETにする場合はオプションでの指定が必須。

mootools [doc]

 new Request({method: 'get', url: 'example.dat'});

prototype [doc]

new Ajax.Request('example.dat', { method: 'get', }); 

jquery [doc]

$.ajax({type: "GET",url: "example.dat",dataType: "text"});
モバイルバージョンを終了