Laravel CORS проблема после подключения jwt-auth

mstdmstd

Новичок
Всем привет,
Делаю vue/cli 4.0.5 / vuex 3 приложение с чтением данных из Backend REST API и я использовал /barryvdh/laravel-cors(0.11.4)
как описано на его странице чтобы решить CORS проблему :
и это заработало и работало пока я не подключил tymon/jwt-auth(1.0.0) и установив эту библиотеку,
так как часть страниц доступны только залогинившемуся пользователю...

я снова получа CORS ошибку, подробнее перейдите пожалуйста на laracast :
https://laracasts.com/discuss/channels/laravel/in-laravel-backend-rest-api-app-after-installing-tymonjwt-auth-again-suffer-cors-error

тамошние обитатели подключились было к беседе но уже уже больше суток никто не помогает...

Спасибо !
 

jonjonson

Охренеть
Проверьте, что не затираются выставленные ранее заголовки ответа, необходимые для CORS.
Было где-то, что не используется/не передается ранее настроенный респонз, а заменяется своим.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Вероятно, нужно поменять порядок исполнения миддлвар, и заворачивать в миддлвару с cors самым последним шагом (т.е. первой в списке) или явно настроить middlewarePriority
 

mstdmstd

Новичок
Проверьте, что не затираются выставленные ранее заголовки ответа, необходимые для CORS.
Было где-то, что не используется/не передается ранее настроенный респонз, а заменяется своим.
Можно подробнее как проверить ?
А где было тут на сайте или где-то еще ?
Я конечно гуглил и нашел некоторые советы и пробовал применить но безуспешно...
 

mstdmstd

Новичок
Вероятно, нужно поменять порядок исполнения миддлвар, и заворачивать в миддлвару с cors самым последним шагом (т.е. первой в списке) или явно настроить middlewarePriority
Я пробовал - неполучилось
Если такое делали с использованием jwt - можно выложить все упомянутые файлы ?
 

mstdmstd

Новичок
Я исправил CORS ошибку с рядом доп опций :
In app/Http/Kernel.php :

PHP:
protected $middleware = [ 
        \Barryvdh\Cors\HandleCors::class, // MUST BE FIRST POSITION!
        \App\Http\Middleware\TrustProxies::class,
        ...
    ];
In .env :

PHP:
    ALLOWED_ORIGINS= '*' // Locally
In config/cors.php :

PHP:
    'supportsCredentials' => true,
    'allowedOrigins' => [env('ALLOWED_ORIGINS')], // '*' for local
    'allowedOriginsPatterns' => [],
    'allowedHeaders' => ['*'],
    'allowedMethods' => ['*'],
    'exposedHeaders' => [],
    'maxAge' => 0,
In config/app.php comment in provider block:

PHP:
    'providers' => [
        ...
    //        Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,
        ...
        'aliases' => [
            'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
            'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
In config/jwt.php:

PHP:
    'jwt' => Tymon\JWTAuth\Providers\JWT\Namshi::class,
    'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class,
    'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class,
In app/User.php :

PHP:
    use Tymon\JWTAuth\Contracts\JWTSubject;
    ...
    class User extends Authenticatable implements JWTSubject
    {
         ...
         public function getJWTIdentifier()
        {
            return $this->getKey();
        }
        public function getJWTCustomClaims()
        {
            return [];
        }
On client :

JavaScript:
    let config = {

        withCredentials:true, // must be false without JWT used

        headers: {

            'Content-Type': 'application/json',

            'Access-Control-Allow-Origin': '*',

        }

    }

    console.log('login config::')

    console.log(config)

    

    axios.post(apiUrl + '/login', userCredentials, config)

        .then((response) => {

            console.log('login response::')
Это работает локально.
Выложил на сервер и работает с опцией ALLOWED_ORIGINS= '*'. Полагаю что не сервере это небезопастно
Но при замене на мой http-сервер опять полезла CORS-ошибка. Первое что пришло в голову - нет ли ограничений на не-https хостинг бекенда?
На что еще надо обратить внимание ?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Учти, что в ALLOWED_ORIGINS указывается все целиком, включая схему, http/https://..., и там не разрешены никакие подстановки типа * или чего-то похожего. Если у тебя, например, домен с www. его нужно указать, если оба работают, указывать оба.
 

mstdmstd

Новичок
Я задал параметр

Код:
ALLOWED_ORIGINS= 'http://subdomain.my-domain.tk'
Где my-domain домен созданный в freenom.com и настроенный на мой Ubuntu ( в Digital Ocean) Server
subdomain.my-domain.tk - используемый поддомен
поддомен допустим ?
 
Сверху