1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS上に設置したサーバーのREST APIへ接続時に"The request could not be satisfied.", "400 Bad Request"が発生

Posted at

現象

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ボタン押して大文字にしてれば、こんな事で何時間も悩まなかったのに。
超反省。
もしも同じ事で悩んでいる人がいた時のために、一応黒歴史として残しておく。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?