Метод Laravel + Dingo + JWT + cors и ОПЦИИ

На моей установке Laravel я настроил Dingo API вместе с JWT-Auth по Tymondesigns и Laravel-cors по barryvdh.

Это процесс входа в систему и извлечения данных из внешнего интерфейса (который размещен на другом сервере):

  1. POST полномочия для API
  2. Получать JWT токен, который затем сохраняется в localStorage с Bearer ключ впереди. После этой точки перехватчик автоматически получает и устанавливает заголовок авторизации с JWT маркер.
  3. POST запрос отправлен /users/me, который является просто маршрутом для получения пользовательских данных. Пользовательские данные приходят с username, email, permissions and messages в данный момент. messages является Eloquent модель где User::class в принципе hasMany(Message::class), Кстати, метод, который извлекает пользовательские данные, читает пользователя, используя $user = JWT::parseToken()->authenticate(); а потом я использую Dingo«s $this->response()->item($user, new SelfTransformer()); отправить данные обратно.

Так что на данный момент все, кажется, работает нормально. Пользователь вошел в систему, пользовательский объект заполнен всеми необходимыми вещами, а таблица сообщений заполнена сообщениями.

Я разбиваю сообщения на страницы, поэтому в данный момент я получаю только 1 сообщение за раз.

Теперь проблема в том, что после этой точки (после того, как пользовательский объект извлечен), если я сделаю еще один запрос, скажем, /users/me?messages=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' => [],
];

Если я использую Почтальон, все отлично работает.

Кроме того, я заметил, что на моей вкладке сети постоянно задаются 2 запроса. Один имеет метод, установленный на OPTIONS а второй фактический запрос …

Я впадаю в депрессию …

0

Решение

Я не уверен.
В вашем app/Http/routes.php положи это наверх и посмотри.

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT');
header("Access-Control-Allow-Headers: Authorization, X-Requested-With,  Content-Type, Accept");

Надеюсь, поможет!

0

Другие решения

Это предполетный запрос, я думаю, что это нормально

0

По вопросам рекламы [email protected]