MasatoEmata
@MasatoEmata (真人 江俣)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

CloudRunにFastAPIをデプロイすると、FastAPIで動的に生成するエンドポイントだけ「http//」のプロトコルになります。

FastAPIでCloudRunにデプロイしたとき、あとでご説明するようなセキュリティ上のエラーが起きたので、FastAPIで動的にURLを生成したいたものは、全て固定値(相対パス)で書き換えました。とりあえずこれで問題が起きなくなるので、問題はクリティカルではないのですが、みなさんはどうしていますか?気になりました。

詳細

  • FastAPIでJinjaのようなテンプレートエンジンを使う場合、エンドポイントを動的に生成したり、Staticファイルを取得するときに下記のような記述をします。
<img src="{{ request.url_for('static', path='image.jpg') }}" alt="description" />
<form method="post" action="{{ request.url_for('submit_form') }}">
  <input name="data" type="text">
  <input type="submit">
</form>
  • しかし、CloudRunにデプロイしてSSL認証された環境でアクセスすると、FastAPIで生成されたこれらURLのプロトコルはHTTPSではなくHTTPになってしまい(=つまりhttp://…のURLになる)、セキュリティ上のエラー(Mixed Content)が出ます。

  • したがって、URLを固定の相対パスに書き換えました。

<img src="/.../....jpg" alt="description" />
<form method="post" action="/sample/form/">
  <input name="data" type="text">
  <input type="submit">
</form>
  • (最初はもはや趣味の域でFastAPIの処理でX-Forwarded-Protoヘッダーを書き換えたりして実験していたのですが、無駄でした)
0

No Answers yet.

Your answer might help someone💌