【问题标题】:request() empty in LaravelLaravel 中的 request() 为空
【发布时间】:2021-08-10 16:41:55
【问题描述】:

我有一个简单的 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-&gt;all() 什么也没给我。

进一步更新

【问题讨论】:

  • request() 返回请求类的实例,而不是请求数据的实例。
  • GET .../saml/logout - 您希望在请求中看到什么? $_GET$_POST 都没有,对吧?试试GET .../saml/logout?foo=bar,登录$request-&gt;all();
  • 我期待在 SamlRequest 等变量下的 SAML 响应,但它似乎不在请求中。这是一个不错的理论,因为很可能这个第三方没有发送任何东西。
  • 请求不是响应。 $_GET$_POST 和 Laravel 的 $request 都与浏览器发送的传入请求相关。响应是服务器如何响应该请求。

标签: php laravel request sec-fetch-site sec-fetch-mode


【解决方案1】:

试试$request-&gt;all()

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

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 2020-06-06
    • 2019-07-08
    • 2016-07-15
    • 2015-12-24
    • 2016-07-30
    • 2021-05-22
    • 2020-06-26
    相关资源
    最近更新 更多