网关 CORS 跨域资源共享
- CORS,全称Cross-Origin Resource Sharing, 是一种允许当前域(domain)的资源(比如html/js/web service)被其他域(domain)的脚本请求访问的机制, 通常由于同域安全策略(the same-origin security policy)浏览器会禁止这种跨域请求。
- 在 Spring MVC 中,仅存在 MVC 跨域配置
- 在 Spring Security 中,存在 MVC 跨域、Security 跨域
- Security 跨域 配置 将覆盖 MVC 跨域 配置
- 在 Spring Cloud 中,存在 网关 跨域 配置
- 如果请求通过网关,则仅需要配置网关跨域
- 如果请求不通过网关(可能在开发测试时使用),则需要配置 被访问项目 的 MVC 跨域 或 网关 跨域
- 被访问项目 未使用 Security,则需要配置 MVC 跨域
- 被访问项目 使用了 Security,则需要配置 Security 跨域
- 若前端开发环境,在项目中配置了跨域(仅在项目运行时有效,打包后无效),前端打包后的测试环境往往使用 Nginx 部署, 则开发环境与测试环境不同,可能会造成未知问题
- 若线上环境使用
对象储存
,而非 Nginx 部署,则无法通过配置 Nginx 修改代理等配置,可能会造成未知问题
名称 | 文档 | 说明 |
---|---|---|
网关 CORS 跨域资源共享 | 本文 | |
Security CORS 跨域资源共享 | 链接 | |
MVC CORS 跨域资源共享 | 链接 |
配置
yaml
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
# 配置跨域的路径,此处代表所有路径
# 此配置仅在网关启动时加载,无法通过配置中心修改(需要重启后才能生效)
'[/**]':
# 跨域时是否允许携带凭证
allow-credentials: true
# 跨域的来源
allowedOrigins:
- http://127.0.0.1:8000
- http://localhost:8000
- http://127.0.0.1:9000
- http://localhost:9000
- http://127.0.0.1:12000
- http://localhost:12000
# 跨域允许的 HTTP 方法
allowedMethods: "GET,POST"
# 跨域允许的请求头参数
allowedHeaders: "*"