java - 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
解决方案
我解决了在@CrossOrigin
控制器上方添加注释的问题。本地不需要。
推荐阅读
- serialization - 如何序列化类包含其他类对象
- java - 在 Java 中实现一个命名管道监听器,它将读取一个 Windows 命名管道
- postgresql - 如何在 postgreSQL 中运行 shell 脚本
- knex.js - 插入时Knex / Objection`重复键值违反唯一约束`
- c# - 更改模式注册表格式后,Kafka Consumer 消息未收到
- r - 如何根据R中的列表索引替换矩阵中的值?
- javascript - 在 while 循环中,如何仅单击列表 web 元素中的链接一次?
- c# - ASP.NET MVC Entity Framework Core 如何为每个数据子集创建单独的表
- python - 如何将 sass 安装到您的系统中(使用或不使用 ruby)
- r - 如何使用 for 循环和 set.seed(i) 为 rmarkovchain 提供模拟?