为什么我的Webhook在我的本地计算机上工作而不在生产环境上工作?

时间:2019-09-09 16:45:54

标签: php laravel nginx webserver

我正在尝试为我的项目设置一个Webhook(Laravel 5.8,在Production上使用nginx,在本地使用XAMPP),借此服务将在存在更新时将POST负载发送到我想要的URL(/ webhooks / revolut)具有付款状态。

我从基础开始,并允许对我的URL(/ webhooks / revolut)进行POST请求,该请求只会返回带有成功消息的JSON对象。

我已经在Laravel中创建了此代码,方法是为Webhook创建POST路由,为此路由禁用CSRF验证,并创建Webhook控制器以返回JSON字符串。

使用Postman进行测试时,可以在使用本地服务器时使用,但是一旦实时推送到我的项目中,我将收到“ 405-不允许使用方法”错误(此路线不支持GET方法。受支持的方法:POST )。但是我正在向服务器发送POST请求。

Controller上没有任何其他中间件,并且不需要用户登录即可访问该页面。我认为这可能是身份验证错误。

我尝试过更改URL(某些论坛说,斜杠可能会引起问题)并检查控制器上的中间件。从5个小时的搜索中,我不确定还能尝试什么,关于从哪里开始的信息很少。

我的路线:

Route::post('/webhooks/revolut', 'Controller@webhookNotification')->name('api');

我的控制器:

    public function webhookNotification(Request $request)
    {
      return response()->json([
          "message" => "API Successful."
      ], 201);
    }

我的VerifyCRSF中间件:

class VerifyCsrfToken extends Middleware
{
    /**
     * Indicates whether the XSRF-TOKEN cookie should be set on the response.
     *
     * @var bool
     */
    protected $addHttpCookie = true;

    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        '/webhooks/revolut',
    ];
}

我很困惑为什么它在本地服务器上而不是产品上运行。这可能是实时服务器上的Nginx安装问题吗?

0 个答案:

没有答案