Php 为什么我的webhook只在本地工作而不在生产上?

Php 为什么我的webhook只在本地工作而不在生产上?,php,laravel,nginx,webserver,Php,Laravel,Nginx,Webserver,我正在尝试为我的项目设置一个webhook(Laravel 5.8,nginx on Production,XAMPP for local),当有一个带有支付状态的更新时,服务会将一个POST负载发送到我想要的url(/webhooks/Revolute) 我从基础知识开始,并允许对我的URL(/webhooks/revolute)发出POST请求,该请求将返回一个JSON对象并显示一条成功消息 我在Laravel中创建了它,通过为webhook创建POST路由,禁用此路由的CSRF验证,并创建

我正在尝试为我的项目设置一个webhook(Laravel 5.8,nginx on Production,XAMPP for local),当有一个带有支付状态的更新时,服务会将一个POST负载发送到我想要的url(/webhooks/Revolute)

我从基础知识开始,并允许对我的URL(/webhooks/revolute)发出POST请求,该请求将返回一个JSON对象并显示一条成功消息

我在Laravel中创建了它,通过为webhook创建POST路由,禁用此路由的CSRF验证,并创建webhook控制器以返回JSON字符串

当使用Postman进行测试时,它在使用我的本地服务器时工作,但一旦将live推送到我的项目中,我将收到一个“405-Method Not Allowed”错误(此路由不支持GET方法。支持的方法:POST)。但我正在向服务器发送POST请求

控制器上没有任何其他中间件,也不需要用户登录才能访问页面。我认为这可能是一个身份验证错误

我尝试过更改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',
    ];
}

我不明白为什么它在本地服务器上工作,而不是在生产服务器上工作。这可能是live server上的nginx安装问题吗?

请确保未设置任何重定向,并且您正在通过正确的方法访问它。HTTP->HTTPS重定向会搞乱一个请求。我想看看你的Nginx配置和邮递员发出的cURL请求是否失败。谢谢各位,我想这可能是问题所在。我的服务器上有一个HTTP请求重定向:
server{listen 80;listen[::]:80;listen 443 ssl http2;listen[:::]:443 ssl http2;server_name example.org;ssl_certificate/etc/letsencrypt/live/example.org/fullchain.pem;ssl_certificate\u key/etc/letsencrypt/live/example.org/privkey.pem;返回301$scheme://www.example.org$request_uri;}
现在就用头撞椅子;我需要把www.放在POST请求前面,因为nginx重定向导致了这个问题。谢谢你们的帮助