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

#php #laravel #http #laravel-5

#php #laravel #http #laravel-5

Вопрос:

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

Комментарии:

1. Что вы пробовали до сих пор? Где ты застрял?

Ответ №1:

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

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

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

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

Если вы хотите включить http / https-часть URL-адреса, вы можете просто использовать этот 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:

laravel 5.6 и выше

 request()->getSchemeAndHttpHost()
  

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

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

Ответ №4:

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

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

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