自定义 request 类,为什么无法获取 IP,而且 $request->server 也是空的

1. 运行环境

laravel: 8.73.2
php: 7.4.x
web: php artisan serve
OS: windows 10

4). 业务环境

刚从 github 拉取的代码,我的项目中有这个问题,就来试试原版是不是也这样,结果还是一样的结果,不是我想要的

5). 相关软件版本

2. 问题描述?

子定义的 request 类无法获取ip ,查看后,server 也是空的,请问如何自定义请求类呢?
测试代码就是下面这2个

namespace App\Http\Requests;

use Illuminate\Http\Request;

class TestRequest extends Request
{
}
Route::get('/', function (App\Http\Requests\TestRequest $request) {
    return response()->json([
        'ip' => $request->ip(),
        'url' => $request->getUri()
    ]);
});
# 测试
curl -i http://127.0.0.1:8000

3. 您期望得到的结果?

返回json : {“ip”:xxxx,”url”:”http://localhost"}

4. 您实际得到的结果?

{“ip”:null,”url”:”http://:/“}

世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到ta。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 3

nginx的话,需要定义转发ip和host。类nginx的服务器都需要转发

2年前 评论
kis龍 (楼主) 2年前

继承 Illuminate\Foundation\Http\FormRequest 类,

或者使用命令行 php artisan make:request TestRequest 生成

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!