SpringBoot-跨域请求问题解决

问题呈现:

在使用ajax向出于安全原因,浏览器禁止对驻留在当前源之外的资源进行AJAX调用。
跨源资源共享(CORS)是大多数浏览器实现的W3C规范,允许您以灵活的方式指定授权的跨域请求类型,而不是使用IFrame或JSONP等安全性较低且功能较弱的方式。

在这里插入图片描述

问题解决:

最开始,在对应controller类加 @CrossOrigin

@Controller("user")
@RequestMapping("/user")
//@CrossOrigin(origins = "*",allowedHeaders = "true")
//@CrossOrigin   //解决跨域请求问题不管用,用FilterRegistrationBean 过滤文件解决
public class UserController extends BaseController{

但依然无法解决问题,最后在user启动类进行Filter 配置进行解决。

@SpringBootApplication(scanBasePackages = {"com.miaoshaproject"}) //扫描整个包,通过注解方式,发现各种注解如:service
@RestController
@MapperScan("com.miaoshaproject.dao")
@Configuration
public class App {
     private CorsConfiguration buildConfig(){
        CorsConfiguration  corsConfiguration=new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }

    /**
     * 解决跨域请求
     * 声明过滤器进行处理
     * @return
     */
    //@Bean
    public FilterRegistrationBean corsFilter(){
        UrlBasedCorsConfigurationSource source=new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",buildConfig());
        FilterRegistrationBean bean=new FilterRegistrationBean(new CorsFilter(source));
        bean.setOrder(0);
       return bean;
    }
}

参考博客:

SpringBoot允许跨域访问

发布了354 篇原创文章 · 获赞 280 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/Fly_Fly_Zhang/article/details/97510473