Docker Traefik API 上的 GET 请求 - 按 CORS 规则阻止

Squ*_*lex 6 get docker traefik

我在查找如何使用来自其他 docker 容器的 GET 请求访问我的 Traefik API 时遇到了麻烦。

语境

我有 2 个 docker 容器,一个运行 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
Run Code Online (Sandbox Code Playgroud)

另一个容器运行一个非常简单的 React Web 应用程序。我正在尝试使用XMLHttpRequest访问 Traefik API 。

我的请求被 Traefik CORS 政策阻止。关于如何配置 Traefik 以启用 Access-Control-Allow-Origin 的任何想法?

Dan*_*mez 4

我做到这一点的唯一方法是连接Access-Control-Allow-Origin标头连接为 Tr\xc3\xa6fik 容器中的标签。

\n\n
traefik.frontend.headers.customResponseHeaders=Access-Control-Allow-Origin:*\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您需要添加更多标头,例如Access-Control-Allow-Method,则必须用双杠将它们连接起来(||,则必须在同一规则中将

\n\n
traefik.frontend.headers.customResponseHeaders=Hdr1:val1,val2||Hdr2:val3\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以你的docker运行行将如下所示。

\n\n
docker run -d -v /var/run/docker.sock:/var/run/docker.sock \\\n-p 8080:8080 -p 80:80 \\\n-l traefik.frontend.rule=Host:my.server \\\n-l traefik.port=80 \\\n-l "traefik.frontend.headers.customResponseHeaders=Access-Control-Allow-Origin:*" \\\n--name traefik traefik --docker --api\n
Run Code Online (Sandbox Code Playgroud)\n