如何使用Laravel 5获取HTTP主机

时间:2016-10-03 15:54:52

标签: php laravel http laravel-5

我尝试使用Laravel 5从HTTP请求中获取主机名,包括子域(例如dev.site.com)。我在the docs中找不到任何相关内容,但我认为这应该很简单。有谁知道怎么做?

4 个答案:

答案 0 :(得分:49)

好消息!事实证明这实际上非常简单,尽管Laravel的Request文档有点缺乏(我想要的方法继承自Symfony's Request class)。如果您使用的是控制器方法,则可以注入具有getHttpHost方法的请求对象。这提供了我正在寻找的东西:

public function anyMyRoute(Request $request) {
    $host = $request->getHttpHost(); // returns dev.site.com
}

从代码中的任何其他位置,您仍然可以使用request helper function访问请求对象,所以这看起来像:

$host = request()->getHttpHost(); // returns dev.site.com

如果您想要包含网址的http / https部分,则可以改为使用getSchemeAndHttpHost方法:

$host = $request->getSchemeAndHttpHost(); // returns https://dev.site.com

我花了一些时间来寻找这个,所以我希望它有所帮助!

答案 1 :(得分:3)

有两种方法,所以要小心:

<?php

    $host = request()->getHttpHost(); // With port if there is. Eg: mydomain.com:81

    $host = request()->getHost(); // Only hostname Eg: mydomain.com

答案 2 :(得分:2)

laravel 5.6及更高版本

request()->getSchemeAndHttpHost()

在刀片中的使用示例:

{{ request()->getSchemeAndHttpHost() }}

答案 3 :(得分:0)

您可以使用request()->url();

您也可以转储完整的request()->headers();

并查看该数据是否对您有用。