GuzzleHttp导致在现有路由上找不到404

时间:2019-01-12 07:44:24

标签: php oauth-2.0 guzzle laravel-passport laravel-5.7

我正在向POST api.myserver.com/v1/oauth/token发送请求,以获取具有client_credentials的令牌,如下所示:

$client = new GuzzleHttp\Client; // A guzzle client
$response = $this->client->post('http://api.myserver.com/v1/oauth/token', [
  'form_params' => [
    'grant_type' => 'client_credentials',
    'client_id' => 'MY_CLIENT_ID',
    'client_secret' => 'MY_CLIENT_SECRET',
    'scope' => ''
  ],
  'headers' => [
    'Accept' => 'application/json'
  ]
));

我正在使用apiato框架,因此默认的laravel护照令牌生成路径已修改为类似api.myserver.com/v1/oauth/token的路径,并因此被修改为路径。

现在,当我从浏览器运行该代码时,上面的代码将抛出一个404 not found exception。当我在POSTman上运行时,它工作正常。当我在测试环境中运行它时,它也可以正常工作。

Client error: `POST http://api.myserver.com/v1/oauth/token` resulted in a `404 Not Found` response:
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" co (truncated...)

我很幸运地尝试将路径更改为http://myserver.com/oauth/token。可能出什么问题了?

2 个答案:

答案 0 :(得分:0)

这是我特别为client_credentials grant_type发生的情况。如果我使用authorization_code,它可以工作。不确定为什么。

答案 1 :(得分:-1)

好吧,尝试使用浏览器到达此端点时得到404的原因是因为它是POST请求。通过浏览器访问URL时,这是一个GET请求。