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); }); });