注意:关于跨域,不同的跨域类型需要不同的配置
一、相同的二级域名之间的跨域
最近在处理跨域问题的时候,发现在微服务中配置允许跨域配置,发现也无济于事了。排查发现,之前之所以这样配置能够生效,是因为都是相同的二级域名之间的跨域,比如: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 跨域配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论