在 Laravel 中处理文本/普通请求(通过 navigator.sendBeacon 发送)

She*_*ith 4 post http navigator laravel laravel-8

问题:

我正在尝试从Laravel 8中的Controller中的文本/纯 POST 请求获取内容/正文

文档或大量谷歌搜索中的任何内容都不起作用。

我努力了:

$request->input();
$request->all();
$request->json();
json_encode($request);
Run Code Online (Sandbox Code Playgroud)

所有这些似乎都表明该请求完全是空的。

语境

这可能与解决方案无关,但可能会帮助其他尝试搜索此问题的人:我尝试使用控制器处理的请求是由客户端的 navigator.sendBeacon 发送的。请求正文实际上是字符串化的 JSON,但 sendBeacon 不允许您使用内容类型 JSON 发送请求。开发工具将此请求的内容类型标头显示为“text/plain”。

She*_*ith 8

我的答案:

用于$request->getContent()获取文本/纯 HTTP 请求的内容。

然后,如果您遇到像我这样的情况,其中文本实际上是 JSON,请使用从json_decode($request->getContent(),true)可在控制器中使用的内容中获取标准 PHP 数组。

事实证明这非常简单,但是该信息不在文档中,也不在任何在线搜索中,所以我认为无论如何发布到 SO 都是值得的......