Почему правильно выставлять CORS заголовки, а не настраивать локальный домен вместо http://localhost:port?
Я фронтенд разработчик с опытом бэкенда. Каждый раз приходя работать в какую-либо компанию, чаще всего встают вопросы касательно CORS заголовков. (ps: чаще всего фронтенд поднимается на http://localhost: %PORT% /) Зачастую это фиксят, выставляя соответствующие заголовки на уровне бэкенда, но бывают случаи, когда проблему делегируют на системных администраторов, которые в свою очередь приходят к фронтенду и говорят, почему бы тебе не решить вопрос локально: сделать локально домен (аналогичный stage-овскому или еще лучше продовскому), притворяться что с него шлёшь запросы и всё будет ок? Хочу услышать ваши аргументированные мнения касаемо данного вопроса. Почему так делать плохо или хорошо. Спасибо. PS: Моё субъективное мнение:
- Решение вопроса со стороны сервера - универсально. Порог вхождения разработчика в проект снижается. Каждому новому разработчику не нужно заморачиваться с тем, чтобы разворачивать локальный домен посредством консоли в unix / или блокнота на винде. По времени на фронте это может занимать от 20 минут до двух часов условно (для тех, у кого меньше опыта работы в терминале). Решение со стороны сервера делается разово и навсегда. Делается быстро (при условии, что администратор или (бэкенд разработчик знает, как))
- Одного домена недостаточно. Для каждого проекта и домена, который будет разворачиваться локально - также потребуется выпуск самоподписанного SSL сертификата.
- Для того, чтобы поднимать таким образом проекты необходимо редактировать сборки, дополнять команды запуска тем, чтобы они подтягивали сертификат (который кстати также необходимо локально на каждом устройстве класть в проект, и добавлять в условный .gitignore, чтобы тот не улетел в scm), и редирект на необходимый домен. Также команды запуска должны быть кроссплатформенными, в случае если проект будет подниматься на других платформах (или добавлять разные команды запуска).
- Часто возникают конфликты: если в заголовках origin указан один stage/prod, и локально мы добавляем такой же домен, фронт не имеет доступа к реальному домену, вместо этого он попадает на локальный.
- (не то чтобы причина, но всё же) Если представить, что проект может быть с публичным API, считаю невозможным каждого клиента (и его разработчиков) заставлять делать действия по развёртыванию домена локально. Хотя если представить ту же самую ситуацию в большом проекте, условно даже на 50 фронтенд разработчиков, то сколько человеко-часов будет потрачено на эти действия (для каждого проекта).
- Далеко не каждый фронтенд разработчик с радостью и без споров будет выполнять эти действия.