Задать вопрос
@khristoforov

Приложение валит ошибку CORS. Как обойти?

Добрый день , инфы море не писал бы если бы что то подошло.
Есть 3 приложухи в докере и прокся на Nginx Proxy Manager
Из дано:
Сервер 192.168.1.1
3 приложения на разных портах 8000,5006,5013
Сервер 192.168.1.2
Прокся NPM
которая принимает запросы от пользователей (стоит BIND который отдает адресс прокси)
у каждого приложения свое доменное имя прокся которая редиректит запросы. На картинке постараюсь понятно нарисовать. В текущий момент все докер контенеры на одном сервере в дальнейшем может поменятся и они будут разнесены по разным серверам, отсюда и участие прокси в общение между серверами (как я думаю)+ к ним обращаются другие приложения.
667bb593f18ff998218441.jpeg

Что происходит: заходит в вебку по сл.пути. браузер-запрос на локальный днс- с днса в прокси-прокси редиректит уже на сервак
Само приложение при запросе от пользователя делает запрос и ждет ответ из соседнего приложения по пути -приложение-запрос-днс-прокся редиректит в соседнее приложение.

и все вроде работает по отдельности но все вместе выбивает ошибку
Access to XMLHttpRequest at 'http://ссс/bbb.ru/select/nodes' from origin 'aaa.bbb.ru' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
Пытался разрешить все всех 3х хостах:
667bb783de8eb849729699.jpeg
не помогло
Разрешить приложению app:5013 и 5006 приложение webgl:8000
667bb8068afa4703891626.jpeg
тоже мимо.
при использовании кастом локайшн та же беда
667bbb2be9797360259476.jpeg
Чесно говоря не очень понимаю где затык происходит почему срабатывает CORS.
Прошу подсказать или поделиться статьей.
  • Вопрос задан
  • 115 просмотров
Подписаться 1 Средний 3 комментария
Решения вопроса 1
@khristoforov Автор вопроса
И победил. Что нужно 667c5e4cafacb809785010.jpeg
и прописываем настройки ниже
if ($http_origin ~* (https?://[^/]*\.bbb\.ru(:[0-9]+)?)$) {
            set $cors "true";
        }

        if ($request_method = 'OPTIONS') {
            set $cors "${cors}options";
        }

        if ($request_method = 'GET') {
            set $cors "${cors}get";
        }
        if ($request_method = 'POST') {
            set $cors "${cors}post";
        }

        if ($cors = "trueget") {
            add_header 'Access-Control-Allow-Origin' "$http_origin";
            add_header 'Access-Control-Allow-Credentials' 'true';
        }

        if ($cors = "truepost") {
            add_header 'Access-Control-Allow-Origin' "$http_origin";
            add_header 'Access-Control-Allow-Credentials' 'true';
        }

        if ($cors = "trueoptions") {
            add_header 'Access-Control-Allow-Origin' "$http_origin";
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since';
            add_header 'Content-Length' 0;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            return 204;
     }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы