我遇到了CORS问题吗?

时间:2018-10-22 20:11:14

标签: javascript laravel api laravel-passport

我已经按照this教程设置了Laravel和Laravel Passport。 为了测试对api的调用,我在服务器上的其他目录中使用了此测试客户端:

<?php

require "vendor/autoload.php";

$client = new GuzzleHttp\Client;

try {
    $response = $client->post('http://todos.test/oauth/token', [
    'form_params' => [
        'client_id' => 2,
        // The secret generated when you ran: php artisan passport:install
        'client_secret' => 'fx5I3bspHpnuqfHFtvdQuppAzdXC7nJclMi2ESXj',
        'grant_type' => 'password',
        'username' => 'johndoe@scotch.io',
        'password' => 'secret',
        'scope' => '*',
    ]
]);

// You'd typically save this payload in the session
$auth = json_decode( (string) $response->getBody() );

$response = $client->get('http://todos.test/api/todos', [
    'headers' => [
        'Authorization' => 'Bearer '.$auth->access_token,
    ]
]);

$todos = json_decode( (string) $response->getBody() );

$todoList = "";
foreach ($todos as $todo) {
    $todoList .= "<li>{$todo->task}".($todo->done ? '✅' : '')."</li>";
}

echo "<ul>{$todoList}</ul>";

} catch (GuzzleHttp\Exception\BadResponseException $e) {
   echo "Unable to retrieve access token.";
}

这有效,两个请求都给出了有效的响应。但是,当我将此代码放到新的react native应用程序中(当然是在javascript中)时,第一个请求返回一个200并给了我一个客户端密码。

现在,当我进行第二次通话时,出现错误:401 Unauthorized。我想知道这是否与CORS有关,还是我看错了方向?

1 个答案:

答案 0 :(得分:-1)

不! 这不是CORS问题,您只是未经授权,请检查access_token是否有效且未过期。