Github:https://github.com/zhangzhixi0305/springboot-cross.git
Gitee:https://gitee.com/zhang-zhixi/springboot-cross.git
前端使用Nginx:http://localhost:8081
后端SpringBoot:http://localhost:8080
前端:
后端:
第一种:全局过滤器
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 MyCorsFilter {
@Bean
public CorsFilter corsFilter() {
// 1.创建 CORS 配置对象
CorsConfiguration config = new CorsConfiguration();
// 支持域,格式是:域名+端口(http://localhost:8081),
config.addAllowedOriginPattern("*");
// 是否发送 Cookie
config.setAllowCredentials(true);
// 支持请求方式:POST,GET,HEAD等,*代表全部支持
config.addAllowedMethod("POST");
config.addAllowedMethod("GET");
// 2.添加地址映射
UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
// /** 表示当前项目的所有请求地址,都支持跨域访问。
corsConfigurationSource.registerCorsConfiguration("/**", config);
// 3.返回 CorsFilter 对象
return new CorsFilter(corsConfigurationSource);
}
}
第二种:全局MVC配置
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {
/**
* 全局CORS配置
*
* @param registry CORS注册器
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
// 映射服务器中那些http接口进行跨域访问
registry.addMapping("/cors/*")
// 配置哪些来源有权限跨域
.allowedOrigins("http://localhost:8081")
// 配置运行跨域访问的请求方法
.allowedMethods("GET", "POST", "DELETE", "PUT");
}
}