博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[心得]SpringBoot使用addCorsMappings配置跨域的坑
阅读量:6689 次
发布时间:2019-06-25

本文共 1133 字,大约阅读时间需要 3 分钟。

什么是跨域问题这里我就不说了,直接说我使用addCorsMappings方法配置跨域时遇到的问题。具体代码如下:

public void addCorsMappings(CorsRegistry registry) {       registry.addMapping("/**")            .allowedOrigins("*")            .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")            .allowCredentials(true)            .allowedHeaders("*")            .maxAge(3600);}

但是使用此方法配置之后再使用自定义拦截器时跨域相关配置就会失效

原因是请求经过的先后顺序问题,当请求到来时会先进入拦截器中,而不是进入Mapping映射中,所以返回的头信息中并没有配置的跨域信息。浏览器就会报跨域异常。

正确的解决跨域问题的方法时使用CorsFilter过滤器。代码如下:

private CorsConfiguration corsConfig() {    CorsConfiguration corsConfiguration = new CorsConfiguration();    * 请求常用的三种配置,*代表允许所有,当时你也可以自定义属性(比如header只能带什么,只能是post方式等等)    */    corsConfiguration.addAllowedOrigin("*");    corsConfiguration.addAllowedHeader("*");    corsConfiguration.addAllowedMethod("*");    corsConfiguration.setAllowCredentials(true);    corsConfiguration.setMaxAge(3600L);    return corsConfiguration;}@Beanpublic CorsFilter corsFilter() {    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();    source.registerCorsConfiguration("/**", corsConfig());    return new CorsFilter(source);}

参考资料:

1、

2、

转载地址:http://egkoo.baihongyu.com/

你可能感兴趣的文章
Windows AD证书服务系列---证书的使用范围(3)
查看>>
ps、firewords在win78中无法直接拖入的问题解决方法
查看>>
iOS :undefined symbols for architecture x86_64
查看>>
Configuring Spring Bean and creating Spring Bea...
查看>>
shell数据清洗相关命令
查看>>
iOS编程修改系统音量
查看>>
搭建hadoop2
查看>>
关于ssh免密不成功解决方案之一
查看>>
详解命令-test
查看>>
列出制定目录所有子目录和文件
查看>>
改变figure大小存储图片(matlab)
查看>>
volatile 修饰数组
查看>>
Java FileInputStream
查看>>
“Freedom!”——英、美、加拒签互联网监管协议
查看>>
Bash, 双引号,单引号,感叹号
查看>>
Common Lisp菜鸟指南(译)
查看>>
(解决办法) UISearchBar 可以呼唤出键盘但无法输入
查看>>
【转】NGUI创建Label图文混排及文字点击
查看>>
Composer PHP依赖管理的新时代
查看>>
vlc发送组播数据
查看>>