Size: a a a

Laravel для начинающих

2021 March 07

В

Влад in Laravel для начинающих
Подскажите по библиотеке
https://github.com/ankitpokhrel/tus-php/wiki/Laravel-&-Lumen-Integration

Когда объявляю роут для загрузку файлов, то все работает:
Route::any('/file_upload/{any?}', 'TusController@index')->where('any', '.*');

А когда добавляю авторизацию:
Route::middleware(['auth:api'])->group(function () {
   Route::any('/file_upload/{any?}', 'TusController@index')->where('any', '.*');
});

То получаю ошибку: "has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status."
В запросе указал:
headers: {
   "Authorization": "Bearer " + bearer,
},

Почему блокируется запрос?
источник

OS

Oleksii Savchuk in Laravel для начинающих
Влад
Подскажите по библиотеке
https://github.com/ankitpokhrel/tus-php/wiki/Laravel-&-Lumen-Integration

Когда объявляю роут для загрузку файлов, то все работает:
Route::any('/file_upload/{any?}', 'TusController@index')->where('any', '.*');

А когда добавляю авторизацию:
Route::middleware(['auth:api'])->group(function () {
   Route::any('/file_upload/{any?}', 'TusController@index')->where('any', '.*');
});

То получаю ошибку: "has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status."
В запросе указал:
headers: {
   "Authorization": "Bearer " + bearer,
},

Почему блокируется запрос?
возможно конфигурация nginx. На сколько помню nginx пробрасывает только стандартные header. Но не помню включен ли в них Auth
источник

AB

Alex B in Laravel для начинающих
Влад
Подскажите по библиотеке
https://github.com/ankitpokhrel/tus-php/wiki/Laravel-&-Lumen-Integration

Когда объявляю роут для загрузку файлов, то все работает:
Route::any('/file_upload/{any?}', 'TusController@index')->where('any', '.*');

А когда добавляю авторизацию:
Route::middleware(['auth:api'])->group(function () {
   Route::any('/file_upload/{any?}', 'TusController@index')->where('any', '.*');
});

То получаю ошибку: "has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status."
В запросе указал:
headers: {
   "Authorization": "Bearer " + bearer,
},

Почему блокируется запрос?
ответ уже имеется в сообщении об ошибке, почитай про cors
источник

В

Влад in Laravel для начинающих
Alex B
ответ уже имеется в сообщении об ошибке, почитай про cors
Скажите, что именно является ответом в этой ошибке, что я должен сделать?
источник

AB

Alex B in Laravel для начинающих
Влад
Подскажите по библиотеке
https://github.com/ankitpokhrel/tus-php/wiki/Laravel-&-Lumen-Integration

Когда объявляю роут для загрузку файлов, то все работает:
Route::any('/file_upload/{any?}', 'TusController@index')->where('any', '.*');

А когда добавляю авторизацию:
Route::middleware(['auth:api'])->group(function () {
   Route::any('/file_upload/{any?}', 'TusController@index')->where('any', '.*');
});

То получаю ошибку: "has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status."
В запросе указал:
headers: {
   "Authorization": "Bearer " + bearer,
},

Почему блокируется запрос?
или вроде это другое 🧐?
источник

AB

Alex B in Laravel для начинающих
Влад
Скажите, что именно является ответом в этой ошибке, что я должен сделать?
сказать беку что можно получать запросы с хоста с которого ты отправляешь апи запросы
источник

В

Влад in Laravel для начинающих
Alex B
сказать беку что можно получать запросы с хоста с которого ты отправляешь апи запросы
я указал *, и без auth:api работает cors
источник

SC

Sergey Chizhik in Laravel для начинающих
Oleksii Savchuk
у меня запросы приходят от пользователей, мы не можем их не обработать. Поэтому они ложатся все очередь.
У очереди есть 100 воркеров, которые разбирают эти задачи и стараются выполнить. Лимиты сохраняются глобально в редисе, на случай если кто-то захочет сделать запрос из контроллера еще.
Но как только параллельные потоки привышают литим запросов внешнего API, оно кидает header retryAfter и мы можем сделать release задачу на это время. А в это время у нас могут выполнится задачи для других API например, или других пользователей
Самый простой вариант, ограничить количество воркеров под конкретную queue до лимита параллельных запросов API)
источник

SC

Sergey Chizhik in Laravel для начинающих
Влад
Скажите, что именно является ответом в этой ошибке, что я должен сделать?
It does not have HTTP ok status.
источник

OS

Oleksii Savchuk in Laravel для начинающих
Sergey Chizhik
Самый простой вариант, ограничить количество воркеров под конкретную queue до лимита параллельных запросов API)
проблема в том, что я бы делал количество очередей = количество пользователей, но я не знаю сколько пользователей будет в итоге) + простой очередей будут
источник

OS

Oleksii Savchuk in Laravel для начинающих
@s_chizhik задача стоит в том чтобы определить именно очередь, что она является callee для метода
источник

OS

Oleksii Savchuk in Laravel для начинающих
грубо говоря, нужно реализовать метод runningInQueue, который будет возвращать в очереди или нет запушен код
источник

SC

Sergey Chizhik in Laravel для начинающих
Oleksii Savchuk
проблема в том, что я бы делал количество очередей = количество пользователей, но я не знаю сколько пользователей будет в итоге) + простой очередей будут
Тебе или пилить управление, или ограничить и лично я не вижу в этом проблемы.

Пусть лимит API — 4 потока и потом ошибка. Ты делаешь externalApi queue под 4 воркера. Когда пользователи набегут у тебя будет 100% утилизация этого лимита и не будет ошибок. Ты всё равно быстрее не будешь её разгребать, потому что 5-й воркер и больше будут сразу отваливаться в ошибку.
источник

OS

Oleksii Savchuk in Laravel для начинающих
Sergey Chizhik
Тебе или пилить управление, или ограничить и лично я не вижу в этом проблемы.

Пусть лимит API — 4 потока и потом ошибка. Ты делаешь externalApi queue под 4 воркера. Когда пользователи набегут у тебя будет 100% утилизация этого лимита и не будет ошибок. Ты всё равно быстрее не будешь её разгребать, потому что 5-й воркер и больше будут сразу отваливаться в ошибку.
а что думаешь по поводу метода runningInQueue. Как бы ты такое реализовал?
источник

SC

Sergey Chizhik in Laravel для начинающих
Oleksii Savchuk
а что думаешь по поводу метода runningInQueue. Как бы ты такое реализовал?
Даниил выше писал, бери в каком-то месте trace приложения и ищи в нём какие-то методы специфичные для queue
источник

SC

Sergey Chizhik in Laravel для начинающих
Но это дичь.
источник

SC

Sergey Chizhik in Laravel для начинающих
Но может сработать
источник

В

Влад in Laravel для начинающих
Sergey Chizhik
It does not have HTTP ok status.
я перепроверил, в JS добавляю заголовок:
       headers: {
           "Authorization": "Bearer " + bearer,
       },

И токен верный, потому что предыдущий запрос проходит авторизацию. В чем может быть причина?
источник

OS

Oleksii Savchuk in Laravel для начинающих
Sergey Chizhik
Даниил выше писал, бери в каком-то месте trace приложения и ищи в нём какие-то методы специфичные для queue
ок, щас попробую
источник

OS

Oleksii Savchuk in Laravel для начинающих
почему?
источник