我相信这一定会被标记为重复的,但我已经看了所有给定的关于同一主题的问题,并尝试了许多建议的解决方案,但它们没有工作。
我在一个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
的设置,但当我在网上搜索时,这两个设置都被作为潜在的解决方案。不幸的是,这两个选项都会导致相同的错误信息。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
检查服务器上的重定向,如HTTP -> HTTPS。重定向总是一个GET请求,这会搞乱非GET路由。一直使用正确的协议(如始终使用HTTPS)将绕过重定向。