问题呈现:
在使用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;
}
}