Как получить хост HTTP с Laravel 5

Я пытаюсь получить имя хоста из HTTP-запроса, используя Laravel 5, включая субдомен (например, dev.site.com). Я не могу найти ничего об этом в документах, но я бы подумал, что это должно быть довольно просто. Кто-нибудь знает, как это сделать?

Ответ 1

Хорошие новости! Оказывается, это на самом деле довольно просто, хотя документации по Laravel Request немного не хватает (нужный мне метод унаследован от класса Symfony Request). Если вы находитесь в методе контроллера, вы можете внедрить объект запроса, который имеет метод getHttpHost. Это обеспечивает именно то, что я искал:

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

Из любого места в вашем коде вы все равно можете получить доступ к объекту запроса, используя вспомогательную функцию request, так что это будет выглядеть так:

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

Если вы хотите включить в URL часть http/https, вы можете просто использовать вместо этого метод getSchemeAndHttpHost:

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

Потребовалось немного покопаться в источнике, чтобы найти это, поэтому я надеюсь, что это поможет!

Ответ 2

Есть два пути, поэтому будьте осторожны:

<?php

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

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

Ответ 3

Ларавелла 5.6 и выше

request()->getSchemeAndHttpHost()

Пример использования в клинке:

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

Ответ 4

Вы можете использовать request()->url();

Также вы можете сбросить полный request()->headers();

И посмотрите, полезны ли эти данные для вас.