Laravel + vueJs + axios, токен на предъявителя не работает - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь научиться создавать базовый API для приложения vue.js с использованием установленных Axors и Laravel.

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

Не удалось загрузить http://127.0.0.1:8000/api/closed: Ответ на предпечатную проверку запрос не проходит проверку контроля доступа: нет Заголовок «Access-Control-Allow-Origin» присутствует в запрошенном ресурс. Происхождение 'http://localhost:8080' поэтому не допускается доступ.

Вот мой Vue JS funciton

userArea () {

  const HTTP = axios.create({
    baseURL: `http://127.0.0.1:8000/api/`,
    headers: {
      "Access-Control-Allow-Origin": "*",
      "Access-Control-Allow-Credentials": true,
      Authorization: 'Bearer ' + this.token
    }
  })

    HTTP.get('closed')
    .then(function (response) {
      console.log(response);
    })
    .catch(function (error) {
      console.log(error);
    });
}

laravel cors.php

namespace App\Http\Middleware;

use Closure;

class Cors
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request)
        ->header('Access-Control-Allow-Origin', '*')
        ->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, DELETE, OPTIONS')
        ->header('Access-Control-Allow-Headers', 'Origin, Content-Type, X-Auth-Token, Authorization, X-Requested-With');

    }
}

Edit: Использование почтальона для эмуляции запроса работает нормально пример почтальона

1 Ответ

0 голосов
/ 03 ноября 2018

Я нашел решение для этого

Мне нужно было добавить cors в промежуточное ПО на маршруте

Route::group(['middleware' => ['jwt.verify','cors']], function() {
    Route::get('user', 'UserController@getAuthenticatedUser');
    Route::get('closed', 'DataController@closed');
});
...