一、跨域问题
基于浏览器的同源策略规定某域下的客户端在没明确授权的情况下,是不能读写另一个域的资源。但是在我们实际开发过程中,前后端经常是相互分离的,并且前后端的项目部署也常常不在一个服务器内或者在一个服务器的不同端口下。前端想要获取后端的数据,就必须发起请求,如果不做处理,就会受到浏览器同源策略的约束。后端可以收到请求并返回数据,但是前端无法收到数据。
二、控制台输出:Access to XMLHttpRequest at …如下
三、解决
第一种.在config包下创建CrossConfig.java配置类
CrossConfig.java
package com.system.honour.config;
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;
/**
* @Description: 跨域处理
* @Author: Joe
* @CreateDate: 2020/3/31 14:18
*/
@Configuration
public class CrossConfig {
private CorsConfiguration buildConfig(){
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedMethod("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedOrigin("*");
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter(){
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**",buildConfig());
return new CorsFilter(source);
}
}
第二种.Controller层在需要跨域的【类或者方法】上加上@CrossOrigin注解即可,这个根据需求相应添加
这两种方法我们项目中都有采用,其它更好的大家多多赐教。