解决springboot添加@CrossOrigin支持跨域不起作用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-znO69vmw-1685790172043)(C:\Users\24174\AppData\Roaming\Typora\typora-user-images\image-20230603185438512.png)]
这是因为@CrossOrigin默认false 不允许发送Cooike
所以在注解里面我们还需开启这个
@CrossOrigin(originPatterns = "*",allowCredentials = "true")
以上注解只能解决局部跨域问题 我们可以编写一个配置类
在spring的高版本以后springboot参数换成了originPatterns。而我看很多的博客都写的类似如下老版本的origins,照着配置仍然解决不了问题。
正确的写法应该是下面这样
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class CORSConfig {
/**
* 允许跨域调用的过滤器
*/
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
//允许白名单域名进行跨域调用
config.addAllowedOriginPattern("*");
//允许跨越发送cookie
config.setAllowCredentials(true);
//放行全部原始头信息
config.addAllowedHeader("*");
//允许所有请求方法跨域调用
config.addAllowedMethod("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
版权声明:本文为CSDN博主「小蛮牧码者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
N博主「小蛮牧码者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35385241/article/details/123186235