如何使用Laravel 5获取HTTP主机

Sea*_*ean 22 php http laravel laravel-5

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

Sea*_*ean 59

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

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

从代码中的任何其他位置,您仍然可以使用request辅助函数访问请求对象,因此看起来像:

$host = request()->getHttpHost(); // returns dev.site.com
Run Code Online (Sandbox Code Playgroud)

如果要包含URL的http/https部分,则可以使用该getSchemeAndHttpHost方法:

$host = $request->getSchemeAndHttpHost(); // returns https://dev.site.com
Run Code Online (Sandbox Code Playgroud)

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

  • `Request :: getHttpHost()`也可以 (9认同)

ins*_*ign 18

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

<?php

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

    $host = request()->getHost(); // Only hostname Eg: mydomain.com
Run Code Online (Sandbox Code Playgroud)


che*_*aby 5

laravel 5.6及更高版本

request()->getSchemeAndHttpHost()
Run Code Online (Sandbox Code Playgroud)

在刀片中使用的示例:

{{ request()->getSchemeAndHttpHost() }}
Run Code Online (Sandbox Code Playgroud)