【angularjs】$http.postでのjson送信でoptions method not allowedを解決した時のメモ
やりたかったことは、localhostのサーバーで動いてるクライアントHTMLからサーバー上のAPIにPOSTでJSONを送るということでした。
なんかうまくいかなくて色々やってみたけど、結論からいうとangular側は以下のコードでいけました。
クライアント側
$http.post("/path/to/api",{ param1: "value1", param2: "value2" });
問題はサーバーサイドにありました。レスポンスヘッダーに以下を追記したらいけました。
Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
ちなみにfuelphpだと
Input::json(); // array("param1" => "value1", "param2" => "value2");
試したけどうまくいかなかったこと
// REQUEST METHODは解決するがFuelPHPでInput::jsonで取得できない $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; // REQUEST METHODは解決するがFuelPHPでInput::jsonで取得できない $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;application/json;charset=utf-8'; // REQUEST METHODがOPTIONSとなり、「405 Method Not Allowed」 $httpProvider.defaults.headers.post['Content-Type'] = 'application/json';
残念ながら丸半日以上でつぶれました。。。以上です