From e6a582dbccc653b1419b6ba23f7dd7b18ee8e537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Thu, 27 Jan 2022 14:11:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=9C=9F=E5=AE=9EIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Providers/AppServiceProvider.php | 12 +++++++++++- app/Providers/RouteServiceProvider.php | 1 - 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 1ffe66ac..f6559aa8 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -9,9 +9,9 @@ use EasyWeChat\Payment\Application as EasyWeChatPaymentApplication; use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; -use Illuminate\Support\Facades\Schema; use Illuminate\Support\ServiceProvider; use Overtrue\EasySms\EasySms; +use Symfony\Component\HttpFoundation\HeaderUtils; class AppServiceProvider extends ServiceProvider { @@ -96,6 +96,16 @@ class AppServiceProvider extends ServiceProvider protected function registerRequestRealIp() { Request::macro('realIp', function () { + if ($forwarded = $this->header('X-Forwarded-For')) { + $segments = HeaderUtils::split($forwarded, ','); + + foreach ($segments as $segment) { + if (filter_var($segment, \FILTER_VALIDATE_IP)) { + return $segment; + } + } + } + return $this->ip(); }); } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 38f7b840..f8218ef4 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -57,7 +57,6 @@ class RouteServiceProvider extends ServiceProvider return response()->json([ 'errcode' => 404, 'message' => 'Not Found', - 'X-Forwarded-For' => request()->header('X-Forwarded-For'), ], 404); }); });