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

【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';                                                                                                                                          

残念ながら丸半日以上でつぶれました。。。以上です