springcloud微服务跨域的配置小结
注意:关于跨域,不同的跨域类型需要不同的配置
一、相同的二级域名之间的跨域
最近在处理跨域问题的时候,发现在微服务中配置允许跨域配置,发现也无济于事了。排查发现,之前之所以这样配置能够生效,是因为都是相同的二级域名之间的跨域,比如:service.csdn.com访问api.csdn.com,这种相同的二级域名配置跨域,可以直接在我们的微服务中添加下列配置进行解决
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*")
.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
.allowCredentials(false).maxAge(3600);
}
}二、不同的二级域名之间的跨域
什么是不同的二级域名?比如从service.csdn.com站点访问 api.abcd.com的时候,这时候在我们的为服务器中配置上面的配置,你就会发现无济于事,还是会抛出跨域请求异常,这个时候,就需要在我们的springcloud gateway网关的服务里去配置跨域了,具体配置如下:
spring:
cloud:
gateway:
#这个是解决和其他微服务配置的跨域冲突的
default-filters:
- DedupeResponseHeader=Vary Access-Control-Allow-Credentials Access-Control-Allow-Origin
- DedupeResponseHeader=Access-Control-Allow-Origin
globalcors:
cors-configurations:
'[/**]':
# 允许跨域的源(网站域名/ip),设置*为全部
# 允许跨域请求里的head字段,设置*为全部
# 允许跨域的method, 默认为GET和OPTIONS,设置*为全部
allow-credentials: true
# allowedOriginPatterns: "*"
#这里是配置允许跨域过来的网站,建议用这种
allowed-origins:
- "http://service.csdn.com"
allowed-headers: "*"
allowed-methods:
- OPTIONS
- GET
- POST
- DELETE
- PUT
- PATCH
max-age: 3600上述的两种配置,基本就能够解决大多数的跨域问题了。如果在网关里配置跨域了,其实微服务的跨域就可以取消不用了。结合自己的实际情况,选择跨域配置,才是最好的选择。
到此这篇关于springcloud微服务跨域的配置小结的文章就介绍到这了,更多相关springcloud 跨域配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
从零开始设计基于SpringBoot的Serverless(本地函数计算)引擎
最近突然冒出一个想法:能不能用SpringBoot自己实现一个类似AWS Lambda或阿里云函数计算的执行引擎,所以下面我们就来看看如何从零开始设计一套基于SpringBoot的Serverless执行框架吧2025-07-07
mybatis-plus插入一条数据,获取插入数据自动生成的主键问题
这篇文章主要介绍了mybatis-plus插入一条数据,获取插入数据自动生成的主键问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12
详解Java中list,set,map的遍历与增强for循环
这篇文章主要介绍了详解Java中list,set,map的遍历与增强for循环的相关资料,需要的朋友可以参考下2017-02-02


最新评论