如何通过ThinkPHP中间件设置特定域名访问限制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计907个文字,预计阅读时间需要4分钟。
ThinkPHP 6 的中间件中,可以使用 `$request` 对象来获取请求信息。以下是使用 `$request` 的基本示例:
- 推荐用
$request->domain()(TP6.1+),它自动剥离端口、转小写、处理 IP 地址,返回干净域名 - 如果用
$request->header('host'),要手动explode(':', ...)[0]去端口,否则localhost:8000和localhost会被当成两个不同域名 - 本地开发时,浏览器常通过
127.0.0.1或localhost访问,但服务器部署后真实域名才生效,测试务必在同环境验证
如何配置白名单域名并做精确匹配
硬编码域名列表容易出错,建议把白名单写进配置文件(如 config/app.php 加 'allowed_domains' => ['api.example.com', 'admin.example.com']),中间件里读取后做严格比对。别用 strpos() 或模糊匹配——example.com 会误放行 badexample.com。
本文共计907个文字,预计阅读时间需要4分钟。
ThinkPHP 6 的中间件中,可以使用 `$request` 对象来获取请求信息。以下是使用 `$request` 的基本示例:
- 推荐用
$request->domain()(TP6.1+),它自动剥离端口、转小写、处理 IP 地址,返回干净域名 - 如果用
$request->header('host'),要手动explode(':', ...)[0]去端口,否则localhost:8000和localhost会被当成两个不同域名 - 本地开发时,浏览器常通过
127.0.0.1或localhost访问,但服务器部署后真实域名才生效,测试务必在同环境验证
如何配置白名单域名并做精确匹配
硬编码域名列表容易出错,建议把白名单写进配置文件(如 config/app.php 加 'allowed_domains' => ['api.example.com', 'admin.example.com']),中间件里读取后做严格比对。别用 strpos() 或模糊匹配——example.com 会误放行 badexample.com。

