ホームページ  >  記事  >  バックエンド開発  >  LaravelでクライアントIPアドレスを正確に取得する方法は?

LaravelでクライアントIPアドレスを正確に取得する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-20 08:32:31723ブラウズ

How to Get Client IP Address Accurately in Laravel?

Laravel 5 でのクライアント IP アドレスの取得

Laravel でクライアントの IP アドレスを取得するのは、$_SERVER["REMOTE_ADDR"] を使用するのが簡単に思えるかもしれません。ただし、コア PHP とは異なり、Laravel は訪問者の IP ではなくサーバーの IP を返します。

この問題に対処するために、Laravel は Request::ip() を採用しています。このメソッドは、Symfony の Request オブジェクトを利用してクライアントの IP アドレスを決定します。

内部的には、Request::ip() が getClientIps() を呼び出します。これは、クライアントの IP アドレスを抽出するための堅牢なアプローチを採用しています。まずサーバーの IP アドレス (REMOTE_ADDR) を取得し、信頼できるプロキシが使用されているかどうかを確認します。

信頼できるプロキシが検出された場合、リクエスト ヘッダーは Laravel の信頼できるヘッダー設定に基づいて検査されます。 X-Forwarded-For や X-Client-IP などの特定のヘッダーは、クライアントの IP アドレスを抽出するために解析されます。

ただし、特にクライアントが複数のプロキシの背後にある場合、これらのヘッダーは信頼できない可能性があります。したがって、リクエストの IP アドレスは $clientIps 配列の最後の要素として追加されます。

その後、クライアントの IP アドレスが $clientIps の最初の要素として選択されます。この IP アドレスは、リクエストの IP または信頼できるプロキシの 1 つである可能性があります。

正確性を確保するために、$clientIps の各 IP アドレスは信頼できるプロキシのリストに対して検証されます。 IP アドレスが信頼できるプロキシに属している場合、その IP アドレスは配列から削除されます。

最終的に、Request::ip() は IP アドレスの配列を返します。この配列の最初の要素は信頼できないクライアントの IP アドレスを表し、その後に信頼できるプロキシの IP が続きます。

以上がLaravelでクライアントIPアドレスを正確に取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。