coderisimo
@coderisimo

Как оптимально реализовать фронт на Vue и бэк на Yii (желательно без CORS)?

Стандартная рекомендация - сделать два поддомена.
Ок, но тогда в дело вступает любимый всеми CORS. Его можно настроить (там тоже много радости!), но он будет постоянно слать PREFLIGHT запросы для так называемых "сложных" реквестов. Т.е место одного запроса будет два. Разумеется, это не ускоряет сайт (и бесит!).
Такого раздвоения не будет лишь для так называемых 'простых' запросов. Например, для GET - он считается простым при соблюдении остальной пачки правил. Но, есть одно но : если вы используете (а вы используете!) bearer tokens , то ваш запрос уже не считается простым, ибо в наличии корсо-противный заголовок Authorization. А значит снова в деле наши любимые двойные запросы.
Конечно, мы можем попробовать кэшировать эти OPTIONS , но многие браузеры плюют на наши желания с высокой колокольни. И время кэширования ограничивают 600 секундами. Так что это не дает существенного выигрыша. Так же можно убрать заголовок Authorization и слать токен прямо в запросе, что тоже некрасиво (а мы же хотим красоты и правильности).
Соответственно, что же делать? ))
Vue желает быть отдельным приложением. При работе кошерным способом через CLI (удобно!) генерирует свою папку. Как подсунуть ее Yii, так чтобы все работало без танцев, CORS и прочих веселых вещей ? Мне не надо REST API (хотя я его уже написал и настроил), мне надо чтобы работало быстро и без лишних сложностей. Или в наше время так не бывает?

Раньше я делал все корявым способом , подключал js файлы в Yii шаблоны И так далее. У продвинутых людей это вызывает ночные кошмары. Сейчас хочется сделать "как положено", разделить мух (Yii) и котлеты (Vue). Однако, получать тормоза только из-за продвинутой(двинутой?) архитектуры не хочется.

Поделитесь соображениями.
Спасибо!

ЗЫ Слышал что-то про реверс прокси, как решение данной проблемы.Но еще и это, боюсь, не осилю. Итак потратил неделю за освоение модных консолей, веб паков, настройки двух поддоменов, изучения postman, cors и прочего. По старинке, запихнув все в Yii вьюхи все бы уже сделал давно.
  • Вопрос задан
  • 727 просмотров
Решения вопроса 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
Бэкэнду выделите поддомен backend на том же домене, что и фронт. Настройте что бы работало.

Потом в конфиге фронта добавьте локейшен на /backend/, там хедер Host с полным доменом бэка (и.е. backend.domain.com) и proxy_pass на 127.0.0.1.

Хотя 500мс это бред полный. Пинг в штаты - 200мс гора. Каким образом там выходит 500-600 - загадка.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
OPTIONS не содержит практически никакой логики на бекенде, разве что авторизацию проверить, чего у вас так от него бомбит? Итого выполняется <50ms, ну дальше уже от интернета зависит.
"Чинится" двумя заголовками и больше не беспокоит.
Весь бекенд уже давно понимает OPTIONS.

Сейчас хочется сделать "как положено", разделить мух (Yii) и котлеты (Vue).

И бомбить от корса, а всего лишь нужно было узнать что это работает только между разными доменами, так почему бы просто не поднять бекенд и фронт на одном домене?
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Мне не надо REST API (хотя я его уже написал и настроил), мне надо чтобы работало быстро и без лишних сложностей. Или в наше время так не бывает?
Зачем API? Зачем vue? Зачем Yii? Не думали, что сложность именно в применяемых инструментах?

Однако, получать тормоза только из-за продвинутой(двинутой?) архитектуры не хочется.
Говорите правильно, но "продолжаете есть кактус". ЗАЧЕМ?!

Есть PHP, есть JS/AJAX - всё!

Берёте и делаете так, чтобы не было API/CORS и тучи "жрущих" производительность никому ненужных вложенных ООП-классов на PHP (для тех, кто может нормально кодить!).

Обмен данными?
fetch() для json! с методом GET/POST и Content-type: text/plain

Хотите блоки разметки быстро менять без перезагрузки страницы и без всяких CORS?
Легко: includeHTML (одна строка!)
Ответ написан
@tolalur
Добрый вечер.

Vue желает быть отдельным приложением. При работе кошерным способом через CLI (удобно!) генерирует свою папку. Как подсунуть ее Yii,

Сто лет не делал ничего на Yii, так что не судите строго.
При деплое на прод в том шаблоне(я про Yii-шный шаблон), в котором вы хотите Vue отдаете то что у вас получилось из папки dist при билде Vue приложения. При разработке Vue приложения просто проксируете все запросы на Yii endpoint
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы