0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

要約

  • X-Forwarded系ヘッダーの役割はプロキシーサーバーを挟む通信でもクライアントの情報にアクセスすることを可能にすること
    • X-Forwarded-Hostヘッダー:クライアントのホストを特定する
    • X-Forwarded-Forヘッダー:クライアントのIPアドレスを特定する
    • X-Forwarded-Protoヘッダー:クライアントのプロトコルを特定する

背景

nextjsのサーバーアクションでエラーが起きていました。
原因がX-Forwarded-Hostヘッダーの未設定であることが分かりました。
X-Forwarded-Hostヘッダーについて調査しました。

x-forwarded-host header with value localhost:3002 does not match origin header with value example.com from a forwarded Server Actions request. Aborting the action.

X-Forwarded-Hostヘッダーとは

X-Forwarded-Host:example.com

リクエスト元のクライアントのホストを特定するための事実上の標準となっているリクエストヘッダーのことです。

X-Forwarded-Hostヘッダーが役に立つ場面

これが役立つのはクライアント→プロキシーサーバー→サーバーのような、プロキシーを挟んだ通信の時です。
プロキシーサーバーを挟むとリクエストヘッダーのHostを上書きすることが可能なため、サーバーはリクエスト元のクライアントのホストを特定するのが困難になります。
X-Forwarded-Hostヘッダーにリクエスト元のクライアントのホストを指定することでプロキシーサーバーを挟んだ通信でもリクエスト元のクライアントのホストを特定することができます。

X-Forwarded-Forヘッダーについて

実は以前X-Forwarded-Forヘッダーを勉強しました。

X-Forwarded-Forヘッダーとは以下のような記法で、プロキシーサーバーを挟む通信でもクライアントIPのIPアドレスを特定することに使用されます。
記法はクライアントIPを左端に書き、中継するサーバーのIPを後ろに追記していきます。

X-Forwarded-For: クライアントIP, 中継機器1, 中継機器2

基本的に中継するたびに前のサーバーのIPをカンマで区切りながら追記する

次にX-Forwarded系のヘッダーがもう一つあったので紹介します。

X-Forwarded-Protoヘッダーについて

プロキシーサーバーを挟む通信でクライアントのプロトコルを特定するために事実上の標準となっているヘッダーのことです。

X-Forwarded-Proto: https

考察 X-Forwarded系ヘッダーの役割について

中継サーバー、プロキシーサーバーを挟む通信でもクライアントの情報にアクセスすることを可能にするためのヘッダーであることが分かりました。

  • X-Forwarded-Host
  • X-Forwarded-For
  • X-Forwarded-Proto

まとめ

  • X-Forwarded系ヘッダーの役割はプロキシーサーバーを挟む通信でもクライアントの情報にアクセスすることを可能にすること
    • X-Forwarded-Hostヘッダー:クライアントのホストを特定する
    • X-Forwarded-Forヘッダー:クライアントのIPアドレスを特定する
    • X-Forwarded-Protoヘッダー:クライアントのプロトコルを特定する

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?