【发布时间】: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->all() 什么也没给我。
进一步更新
【问题讨论】:
-
request()返回请求类的实例,而不是请求数据的实例。 -
GET .../saml/logout- 您希望在请求中看到什么?$_GET或$_POST都没有,对吧?试试GET .../saml/logout?foo=bar,登录$request->all();。 -
我期待在 SamlRequest 等变量下的 SAML 响应,但它似乎不在请求中。这是一个不错的理论,因为很可能这个第三方没有发送任何东西。
-
请求不是响应。
$_GET和$_POST和 Laravel 的$request都与浏览器发送的传入请求相关。响应是服务器如何响应该请求。
标签: php laravel request sec-fetch-site sec-fetch-mode