Жрать, делая запрос GET вместо POST - PullRequest
0 голосов
/ 16 июня 2020

Я уверен, что это будет помечено как дубликат, но я просмотрел все заданные вопросы по той же теме и попробовал многие из предложенных решений, и они не сработали.

Я участвую в проекте laravel, и у меня есть почтовый запрос, отправляемый через guzzle.

           $client = new \GuzzleHttp\Client();
           $response = $client->request('POST', $url, [
                'headers' => [
                    'Authorization' => 'Bearer ' . $apiToken,
                    'Accept' => 'application/json',
                    'Content-Type' => 'application/json',
                    'allow_redirects' => false,
                    // 'allow_redirects'=>['strict'=>true]
                ],
                'json' => json_decode($logText, true)
            ]);

Я продолжаю получать ответ "message": "The GET method is not supported for this route. Supported methods: POST."

Я проверено, и действительно, он отправляет запрос GET на тот же $url, указанный выше.

Сначала у меня не было этих настроек allow_redirects, но обе настройки были предложены в качестве потенциальных решений, когда я искал в Google . К сожалению, оба варианта приводят к одному и тому же сообщению об ошибке: The GET method is not supported for this route.

Почему мой запрос POST меняется на запрос GET?

Я также пробовал $client->post вместо этого, и ЭТО также стало запросом GET.

Я также дважды проверил, что сообщение об ошибке GET на самом деле не приходит изнутри запроса POST: это не так. Маршрут POST вообще не обрабатывается.

PHP версия 7.2, Laravel версия 6.0.2, версия Guzzle 6.5.3

1 Ответ

2 голосов
/ 16 июня 2020

Проверить перенаправления на сервере, например HTTP -> HTTPS. Перенаправления всегда представляют собой GET-запрос, который нарушит маршрутизацию без GET. Использование правильного протокола на всем протяжении (например, всегда использовать HTTPS) позволит обойти перенаправление.

...