現象
AWS上にApacheでサーバーを立てました。
・Webサイトの表示OK
・REST APIの呼び出し(GET)OK
よし、問題ないかな。
その後REST APIにPOSTでアクセス。
「あれ?処理がエラーになった」
何故かREST APIを呼び出す時、GETはOKなのに、POSTでNGになる。
現象2
REST APIをcurlコマンドで呼び出していましたが、その際以下の様に実行していました。
curl -X post -H {設定したヘッダ} -d {POSTデータ} https://XXX.XXX/api/YYYY
問題がどこの箇所か分からないのですが、
[CloudFront]--[ELB]--[Apache]
とアクセスされるはずが、ApacheのアクセスログにPOST通信結果がありませんでした。
原因
methodの指定が「小文字」だったのがダメだったようです。
以下の様に大文字に変更したら普通に通信ができました。
curl -X POST -H {設定したヘッダ} -d {POSTデータ} https://XXX.XXX/api/YYYY
いくつか記事を見つけたのですが、
ここには『メソッド名はかならず大文字のこと。』
ここには『実行するHTTP(HTTPS)のメソッド名を指定する場合、すべて大文字にし』
という表現がありました。
結論
あれー、、、method名って大文字でないとダメだったんだ。。。
コマンドラインを書くとき、ダダダダダって書いてしまい気にせず小文字にしたんだけど、全く気にしてなかった。
横着しないでちゃんとSHIFTボタン押して大文字にしてれば、こんな事で何時間も悩まなかったのに。
超反省。
もしも同じ事で悩んでいる人がいた時のために、一応黒歴史として残しておく。