Laravel 8升级Laravel 9:Trusted Proxies相关疑问
Laravel 8 升级到 9:TrustProxies 中间件是否需要修改?
直接升级现有代码库的话,完全不需要修改app/Http/Middleware/TrustProxies.php,官方升级指南的说明是准确的,没有错误。
原因说明:
- Laravel 9 在直接升级现有项目时,会兼容旧版的
fideloper/trustproxy包实现,不会强制替换你已有的中间件文件。 - 你当前的
protected $headers = Request::HEADER_X_FORWARDED_ALL;配置,在升级后的 Laravel 9 环境中依然能正常工作,不会影响代理相关的功能。 - 指南里提到的「需要修改」场景,仅针对将旧项目代码导入全新 Laravel 9 应用骨架的情况——因为全新的 Laravel 9 骨架默认使用的是
Illuminate版本的 TrustProxies 中间件,这时候才需要同步调整你的代码适配新骨架的结构。
(可选)主动升级到 Illuminate 版本的 TrustProxies
如果你想主动切换到 Laravel 9 原生的中间件实现,可以做以下调整:
- 替换命名空间:
// 旧代码 use Fideloper\Proxy\TrustProxies as Middleware; // 替换为 use Illuminate\Http\Middleware\TrustProxies as Middleware; - 保持 headers 配置等价性:
原来的Request::HEADER_X_FORWARDED_ALL可以直接替换为 Illuminate 请求类的常量,或者展开为等价的组合:protected $headers = \Illuminate\Http\Request::HEADER_X_FORWARDED_ALL; // 或者等价写法 protected $headers = \Illuminate\Http\Request::HEADER_X_FORWARDED_FOR | \Illuminate\Http\Request::HEADER_X_FORWARDED_HOST | \Illuminate\Http\Request::HEADER_X_FORWARDED_PORT | \Illuminate\Http\Request::HEADER_X_FORWARDED_PROTO;
内容的提问来源于stack exchange,提问作者Mubashar Abbas
相关产品推荐
相关产品推荐

