首页 > 解决方案 > Docker 容器的跨源错误

问题描述

我正在本地使用微服务构建应用程序,然后在 docker 容器上构建我目前拥有 Eureka、带有 Spring Security 的 Zuul、使用 Spring Boot 2 的微服务和 Angular 6 客户端

我在 Zuul 上对 Spring Security 进行了参数化,以管理安全性和CORS、扩展WebSecurityConfigurerAdapter类、覆盖configure方法……在本地它工作得很好。我的客户端 ( http://localhost:4200 ) 可以通过 Zuul ( http://localhost:8762/microservice/api/.. .) 访问 API,并使用 OPTION 添加基本身份验证标头。

但是对于使用 Docker Compose 构建的 Docker 容器,情况就不一样了。Chrome 抛出“未知异常”,而 Firefox 在 OPTION 请求期间指示跨源错误。客户端通过 Zuul 调用 API,如下所示:http://gdt-gateway-proxy-service:8762/microservice/api/ ...

这是我docker-compose.yml文件的一部分,涉及客户端 (gdt-client) 和 Zuul (gdt-gateway-proxy-service) :

version: '2'
services:

    ...

    gdt-gateway-proxy-service:
        container_name: alpine-jdk8-gdt-gateway-proxy-service
        build:
            context: .
            dockerfile: Dockerfile.gdt-gateway-proxy-service
        image: alpine-jdk8-gdt-gateway-proxy-service:latest

        ...

        expose:
            - 8762
        ports:
            - 8762:8762
        networks:
            - gdt-network


    ...


    gdt-client:
        container_name: alpine-httpd-gdt-client
        build:
            context: .
            dockerfile: Dockerfile.alpine.httpd-gdt-client
        image: alpine-httpd-gdt-client:base
        expose:
            - 4200
        ports:
            - 4200:80
        networks:
            - gdt-network
        links:
            - gdt-gateway-proxy-service:gdt-gateway-proxy-service
        depends_on:
            - gdt-gateway-proxy-service
        logging:
            driver: json-file
networks:
    gdt-network:
        driver: bridge

标签: javaspring-bootdockerdocker-composemicroservices

解决方案


我解决了在@CrossOrigin控制器上方添加注释的问题。本地不需要。


推荐阅读