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

Susan Sarandon
リリース: 2024-10-20 08:32:31
オリジナル
722 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!