У меня проблемы с поиском доступа к моему Traefik API с помощью запроса GET из другого контейнера докеров.
Контекст
У меня есть 2 контейнера докеров, один из которых запускает экземпляр traefik:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -p 80:80 -l traefik.frontend.rule=Host:my.server -l traefik.port=80 --name traefik traefik --docker --api
Другой контейнер запускает довольно простое веб-приложение React. Я пытаюсь подключиться к Traefik API с помощью XMLHttpRequest.
Мой запрос заблокирован политикой Traefik CORS. Есть идеи, как настроить Traefik для включения Access-Control-Allow-Origin?
Единственный способ сделать это - подключить заголовок Access-Control-Allow-Origin
как метку в контейнере Træfik.
traefik.frontend.headers.customResponseHeaders=Access-Control-Allow-Origin:*
И если вам нужно добавить больше заголовков, таких как Access-Control-Allow-Method
, вы должны объединить их двойными полосами (||
) в том же правиле.
traefik.frontend.headers.customResponseHeaders=Hdr1:val1,val2||Hdr2:val3
Итак, ваша строка докер запустить будет следующей.
docker run -d -v /var/run/docker.sock:/var/run/docker.sock \
-p 8080:8080 -p 80:80 \
-l traefik.frontend.rule=Host:my.server \
-l traefik.port=80 \
-l "traefik.frontend.headers.customResponseHeaders=Access-Control-Allow-Origin:*" \
--name traefik traefik --docker --api
Я использую Traefik 2.2, но я перенастроил весь стек, и теперь все работает
Дэвид, какую версию Traefik вы используете? Изменился синтаксис правил. Мне нужно обновить этот пост.