我正在尝试为我的项目设置一个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安装问题吗?