4
1

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 1 year has passed since last update.

Cloud Run上にデプロイしたAPIサーバーが400 Bad RequestのYour client has issued a malformed or illegal requestを返す

Last updated at Posted at 2023-02-02

ログにエラーが出力されず厄介な問題だったため共有します。

概要

GCPのCloud Run上にデプロイしたRuby on RailsのAPIサーバーにて、リクエストボディを含むGETリクエストのAPIを叩いたところ
Your client has issued a malformed or illegal request
と記載されたHTMLが返ってきました。以下HTMLを表示した画面です。
スクリーンショット 2023-02-02 19.27.36.png

エラー詳細

ローカルでは問題なく動いており、Cloud Runにデプロイした本番環境のみで上記エラーが起こります。
Cloud Run上のログにはAPIが叩かれたことすら表示されていなく、リクエストボディを空にすると初めてログが表示されます。

原因

Cloud Runのようなクラウド上に構築されたサーバーを使用する場合、REST APIの原則に基づいて不自然なリクエストを弾く仕様がAPIサーバーでのリクエスト前段に構築されているようです。
今回の場合は、
GETリクエストはURIに組み込まれた情報のみを使用するべきであり、リクエストボディ等を含むべきではない
という思想に基づいた仕様がGCP上で適用されており、自身で構築したAPIサーバーに到達する前に弾かれていたことになります。
リクエストボディを含む場合はPOSTリクエストとしてAPIを作成しましょう。

参考

python 3.x - デプロイされたサービスに到達せずに Cloud Run リクエストがエラー 400 をトリガーする

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?