私の Laravel のインストールでは、tymondesigns および by barryvdh とDingo API
一緒にセットアップしました。JWT-Auth
Laravel-cors
これは、ログインしてフロント エンド (別のサーバーでホストされている) からデータを取得するプロセスです。
POST
への資格証明API
JWT
トークンを受信しlocalStorage
、Bearer
キーを前にして格納されます。この時点以降、インターセプターはJWT
トークンを使用して Authorization ヘッダーを自動的に取得および設定します。POST
リクエストは に送信され/users/me
ます。これは、ユーザー データを取得するための単なるルートです。username, email, permissions and messages
現時点ではユーザーデータが付属しています。基本的に安心messages
のEloquent
モデルです。ちなみに、ユーザーデータを取得するメソッドは、 を使用してユーザーを読み取り、 を使用してデータを送り返しています。User::class
hasMany(Message::class)
$user = JWT::parseToken()->authenticate();
Dingo
$this->response()->item($user, new SelfTransformer());
したがって、この時点ではすべてがうまく機能しているように見えます。ユーザーがログインし、ユーザー オブジェクトに必要なものがすべて取り込まれ、メッセージ テーブルにメッセージが取り込まれます。
メッセージのページネーションを行っているため、現時点では一度に 1 つのメッセージしか受信していません。
ここでの問題は、この時点の後 (ユーザー オブジェクトが取得された後) に別の要求を行うと、たとえば /users/me?messages=2
、メッセージの 2 ページ目を取得するようにすると、次のエラーが発生することです。
No 'Access-Control-Allow-Origin' header is present on the requested resource.
ログアウトしようとしても同じエラーが発生します。
すでに登録されているユーザーで登録しようとすると、同じエラーが発生します。
そのため、Laravel で例外がスローされるたびに、Access-Control-Allow-Origin
ヘッダーが設定されていないように感じます。
これは私のcors構成です:
return [
/*
|--------------------------------------------------------------------------
| Laravel CORS
|--------------------------------------------------------------------------
|
| allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
| to accept any value.
|
*/
'supportsCredentials' => true,
'allowedOrigins' => ['*'],
'allowedHeaders' => ['Content-Type', 'Accept', 'Authorization', 'X-Requested-With', 'Origin'],
'allowedMethods' => ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
'exposedHeaders' => ['Authorization'],
'maxAge' => 0,
'hosts' => [],
];
Postman を使用すると、すべて正常に動作します。
また、ネットワーク タブで、常に 2 つのリクエストが設定されていることに気付きました。1つはメソッドが設定されてOPTIONS
おり、2つ目は実際のリクエストです...
憂鬱になってきました…