我正在尝试使用Laravel 5从一个HTTP请求中获取主机名,包括子域(例如dev.site.com)。我在文档中找不到任何相关信息,但我认为这应该很简单。有人知道如何做到这一点吗?
dev.site.com
1hdlvixo1#
好消息!事实证明这其实很简单,尽管Laravel的Request文档有点欠缺(我想要的方法继承自Symfony's Request class)。如果你使用控制器方法,你可以注入request对象,它有一个getHttpHost方法。这正是我所寻找的:
Request
getHttpHost
public function anyMyRoute(Request $request) { $host = $request->getHttpHost(); // returns dev.site.com }
在代码的任何其他地方,您仍然可以使用request helper函数访问request对象,因此如下所示:
request
$host = request()->getHttpHost(); // returns dev.site.com
如果你想在URL中包含http/https部分,你可以使用getSchemeAndHttpHost方法:
getSchemeAndHttpHost
$host = $request->getSchemeAndHttpHost(); // returns https://dev.site.com
1cklez4t2#
有两种方法,所以要小心:
<?php $host = request()->getHttpHost(); // With port if there is. Eg: mydomain.com:81 $host = request()->getHost(); // Only hostname Eg: mydomain.com
f3temu5u3#
request()->getSchemeAndHttpHost()
刀片使用示例:
{{ request()->getSchemeAndHttpHost() }}
4urapxun4#
您可以使用request()->url();您还可以转储整个request()->headers();看看这些数据对你是否有用。
request()->url();
request()->headers();
4条答案
按热度按时间1hdlvixo1#
好消息!事实证明这其实很简单,尽管Laravel的Request文档有点欠缺(我想要的方法继承自Symfony's
Request
class)。如果你使用控制器方法,你可以注入request对象,它有一个getHttpHost
方法。这正是我所寻找的:在代码的任何其他地方,您仍然可以使用
request
helper函数访问request对象,因此如下所示:如果你想在URL中包含http/https部分,你可以使用
getSchemeAndHttpHost
方法:1cklez4t2#
有两种方法,所以要小心:
f3temu5u3#
laravel 5.6及以上版本
刀片使用示例:
4urapxun4#
您可以使用
request()->url();
您还可以转储整个
request()->headers();
看看这些数据对你是否有用。