laravel file_get_contents(' php://输入')无效

时间:2017-12-24 00:26:54

标签: php laravel http

我已经在这个问题上搜索了答案,但我似乎无法找到任何解决方案。
我正在尝试从我的应用程序正在使用的api服务获得响应。
在每次成功的事务中,api都会将POST通知推送到我提供的任何URL以及事务的详细信息。我发现只有请求才能通过。但是,如果我通过公共文件夹路由请求,它似乎工作正常。
是否有任何方法可以使用laravel中的POST路由控制器来获取file_get_contents(' php:// input') ?
以下是我的代码示例:

ApiController.php

((?!gif).)

路由/ web.php

public function recieve_payment(Request $request){
    $res = file_get_contents('php://input');
    if (!empty($res)) {
        // insert values of $res to database
    }
}

3 个答案:

答案 0 :(得分:2)

我想从CSRF保护中排除URI

protected $except = [
    'stripe/*',
];

这段小代码字面上节省了我几个小时。

答案 1 :(得分:1)

将您的路线放置在routes / api.php中,而不是routes / web.php中。 route / api.php已禁用CSRF。

routes / api.php

Route::post('/recieve', 'ApiController@recieve_payment');

您的Webhook URL现在将是:

BASE_URL / api /接收

此外,您无需使用:

$res = file_get_contents('php://input');

您可以使用:

$res = $request->all();

答案 2 :(得分:1)

使用$request->getContent()

laracast