首页 > 解决方案 > Laravel 中的 request() 为空

问题描述

我有一个简单的 Laravel 应用程序,其中第三方从外部源重定向到路由。

这个外部站点点击了一个非常简单的注销控制器/saml/logout


<?php

namespace App\Http\Controllers\Saml;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Log;

class LogoutController extends Controller
{
    /**
     * Entry point for SAML logout.
     * TODO: check if you need auth to go here.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return void
     */
    public function logout(Request $request)
    {
        Log::info('Response:', (array) request());
        Log::info('Response:', (array) $_REQUEST);
        Log::info('Response:', (array) $_GET);
        Log::info('Response:', (array) $_POST);
        Log::info('Response:', (array) $request->method());
    }
}


这是我可以看到的痕迹:

在此处输入图像描述

因此,根据这个跟踪器,它能够点击 URL 并获得 200 的 HTTP 状态。

在此处输入图像描述

但是,在我的日志中,我得到以下信息。

在此处输入图像描述


我的问题是,为什么我的日志中没有关于请求的任何信息?

我能看到的唯一有点奇怪的是,所谓的东西Sec-Fetch-Dest被设置为 iframe。

更新给出了答案。

使用$request->all()没有给我任何东西。

在此处输入图像描述

进一步更新

在此处输入图像描述

标签: phplaravelrequestsec-fetch-sitesec-fetch-mode

解决方案


尝试 $request->all()

public function logout(Request $request)
{
    Log::info('Response:', $request->all());
}

推荐阅读