@asdevlog

Ошибка CORS при использование aiohttp и Angular8 как правильно настроить?

Добрый день.
Столкнулся с проблемой.
Есть бэк на AIOHTTP . Пришу фронт на ангуляре.
При попытке запроса к апи в консоли браузера появляется ошибка
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at 127.0.0.1:8080/api/v3/driver/all/. (Reason: CORS preflight response did not succeed).

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at 127.0.0.1:8080/api/v3/driver/all/. (Reason: CORS request did not succeed).


сервер и фронт на разных портах. Сервер 8080 а фронт 4200. Я понимаю что срабатывает CORS. Но мои попытки что ли бо изменить не помогли.
Пробовал на бэке настроить корс так
cors = aiohttp_cors.setup(app
                              , defaults={
        '*': aiohttp_cors.ResourceOptions(
            allow_credentials=True,
            expose_headers='*',
            allow_headers='*',
            allow_methods='*',
        )
    })

и так
for route in list(app.router.routes()):
        cors.add(route, {
            "http://127.0.0.1:4200":
                aiohttp_cors.ResourceOptions(allow_credentials=True),
            "http://localhost:4200":
                aiohttp_cors.ResourceOptions(allow_credentials=True),
        })

    return app

Но результат один и тот же.
Отправляется запрос OPTIONS с 400 статусом.
5e4ca863eb514781189178.png

Причем я настраивал проксирование из ангуляра, и билдил фронт в статику на бэк. результат один и тот же... как будто ничего не изменилось.
что может быть не так? Как правильно настроить?
  • Вопрос задан
  • 1021 просмотр
Пригласить эксперта
Ответы на вопрос 2
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
не надо ничего дополнительно настраивать на бэке и ставить nginx, вебпаковского изкоробочного прокси для дев-режима достаточно
https://angular.io/guide/build#proxying-to-a-backe...
Значит что-то не так сделали.
и не забывайте что запросы вы должны слать на 4200, никаких OPTIONS из браузера быть не должно.
И запускать лучше явно указав прокси-конфиг, типа ng serve --proxy-config proxy.conf.json
Ответ написан
Комментировать
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Запустите рядом nginx (есть и портабл, и в докере можно стартануть) и пропишите ваши сервера как upstream через nginx в качестве реверс-прокси.
Это повесит все ваши сервера на один порт и приблизит ваше девелоперское окружение к тому, что будет у вас в проде.
Можно в hosts прописать для 127.0.0.1 какой-нибудь домен, чтобы всё ещё сильнее похоже было на прод.
Проблема уйдёт, когда origin будет совпадать с адресами вызова api.
Но, очевидно, можно и настройками cors побороть. Вопрос только зачем, если ваш апи предназначен для вашего сайта, а не для публикации для неограниченного круга сторонних сайтов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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