0

我正在使用tymondesigns/jwt-auth创建一个 api。我需要获取 API request sender 的 URL。所以我写了一个中间件并使用,

public function handle($request, Closure $next)
    {
        dd(request()->getHttpHost());      
    }

这将获得唯一的 api URL。然后我尝试了,

$request->header('referer');

我只得到一个空值。有没有办法完成这个任务?

4

1 回答 1

1

我遇到了一个类似的问题并找到了解决方案。如果我调用我的 Laravel 8 API 并查找标头,这些可能会很有用:

host: ["127.0.0.1:8000"]
origin: ["http://localhost:3000"]
referer: ["http://localhost:3000/"]

所以我知道这host是托管 API 的地方,origin而且referer,它们有一些区别。您的问题可能是因为您尝试从中间件访问它们,尝试直接从控制器检查它们。此外,如果您需要清晰的发件人主机名,您可以使用以下代码:

public function SomeController(Request $request)
    {
        $host = explode('/', $request->header('origin'))[2]
        // Or with the referer
        $host = explode('/', $request->header('referer'))[2]

如果您仍然收到null响应,您可以简单地调试它,只需检查所有标题:

$headers = $request->header()
于 2021-05-25T19:23:53.970 回答