Docker compose 添加授权和;traefik反向代理的原始标头

Docker compose 添加授权和;traefik反向代理的原始标头,docker-compose,traefik,Docker Compose,Traefik,我使用Docker对Traefik进行了一个非常简单的设置&让我们加密以将传入请求代理到API服务 除了客户机因为CORS而无法向API发出请求之外,所有这些都正常运行 如何添加来源、内容类型和授权标头,以确保它们到达代理后面运行的节点API,并确保响应标头中保留访问控制允许来源? 我的traefik.toml文件: debug = false logLevel = "ERROR" defaultEntryPoints = ["https","h

我使用Docker对Traefik进行了一个非常简单的设置&让我们加密以将传入请求代理到API服务

除了客户机因为CORS而无法向API发出请求之外,所有这些都正常运行

如何添加来源、内容类型和授权标头,以确保它们到达代理后面运行的节点API,并确保响应标头中保留访问控制允许来源?

我的traefik.toml文件:

        debug = false

        logLevel = "ERROR"
        defaultEntryPoints = ["https","http"]

        [entryPoints]
        [entryPoints.http]
        address = ":80"
            [entryPoints.http.redirect]
            entryPoint = "https"
        [entryPoints.https]
        address = ":443"
        [entryPoints.https.tls]

        [retry]

        [docker]
        endpoint = "unix:///var/run/docker.sock"
        domain = "<hostname-here>"
        watch = true
        exposedByDefault = false

        [acme]
        email = "<your-email-here>"
        storage = "acme.json"
        entryPoint = "https"
        onHostRule = true
        [acme.httpChallenge]
        entryPoint = "http"
这些文档意味着您可以添加自定义标题

traefik.frontend.headers.customResponseHeaders=EXPR在将响应转发给客户端之前,将头附加到容器返回的每个响应。 格式:标题:值| |标题2:值2

但是我怎么知道动态值(比如授权令牌)的值呢

编辑:

我尝试添加如下自定义标题:

-“traefik.frontend.headers.customResponseHeaders=访问控制允许原点:”


但这并没有附加到响应头中

我在nodejs应用程序中根据请求的来源有条件地解析CORS,试图将主机名列为白名单,但Traefik没有正确设置来源。我用Traefik删除了条件主机名和白名单主机名


完成此操作后,CORS工作正常,我上面的标签完好

入口点>路由器>中间件>服务

我认为您应该首先创建中间件,然后将其连接到特定路由器: 通过将以下标签添加到我的服务中,我将标题添加到响应中:

        ...
        - "traefik.http.routers.frontend.entrypoints=http"
#creating middleware for headers
        - "traefik.http.middlewares.frontend.headers.customresponseheaders.Access-Control-Allow-Methods=POST, GET, PUT, OPTIONS, DELETE"
        - "traefik.http.middlewares.frontend.headers.customresponseheaders.Access-Control-Allow-Origin=*"
        - "traefik.http.middlewares.frontend.headers.customresponseheaders.Access-Control-Allow-Headers=x-requested-with, Content-Type,Authorization"
#attach middleware to the frontend router
        - "traefik.http.routers.frontend.middlewares=frontend"
潜在相关(在v2中):
        ...
        - "traefik.http.routers.frontend.entrypoints=http"
#creating middleware for headers
        - "traefik.http.middlewares.frontend.headers.customresponseheaders.Access-Control-Allow-Methods=POST, GET, PUT, OPTIONS, DELETE"
        - "traefik.http.middlewares.frontend.headers.customresponseheaders.Access-Control-Allow-Origin=*"
        - "traefik.http.middlewares.frontend.headers.customresponseheaders.Access-Control-Allow-Headers=x-requested-with, Content-Type,Authorization"
#attach middleware to the frontend router
        - "traefik.http.routers.frontend.middlewares=frontend"