跨域是什么意思???
做开发的小伙伴多少会看过这个报错例子吧 下面我们就来说说跨域是什么
要了解跨域首先,我们需要了解一些前置知识:
一个URL的组成: 协议 域名(子域名 主域名) 端口号 资源地址 http://www.baidu.com:8080/
协议,子域名,主域名,端口号 四项组成部分中,有一项不同 ,不同的域之间互相访问资源,就是不同的域 就被称之为跨域。
随着前后端分离开发的越来越普及,会经常遇到跨域的问题
下面我们介绍几种通过springboot的配置来解决跨域问题:第一种:设置允许全局跨域请求
代码语言:javascript复制@Configuration
public class CorsConfig {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*"); // 1 允许任何域名使用
corsConfiguration.addAllowedHeader("*"); // 2 允许任何头
corsConfiguration.addAllowedMethod("*"); // 3 允许任何方法(post、get等)
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig()); // 4
return new CorsFilter(source);
}
}
或者使用这种配置:
代码语言:javascript复制@Configuration
public class GlobalCorsConfig {
@Bean
public CorsFilter corsFilter() {
//1.添加CORS配置信息
CorsConfiguration config = new CorsConfiguration();
//放行哪些原始域
config.addAllowedOrigin("*");
//是否发送Cookie信息
config.setAllowCredentials(true);
//放行哪些原始域(请求方式)
config.addAllowedMethod("*");
//放行哪些原始域(头部信息)
config.addAllowedHeader("*");
//暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
config.addExposedHeader("content-type");
//2.添加映射路径
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
//3.返回新的CorsFilter.
return new CorsFilter(configSource);
}
}
第二种:使用注解方式
代码语言:javascript复制@RequestMapping("/test")
@CrossOrigin("http://localhost:10000")
public Map<String,String> vv(){
Map<String,String> hmap = new HashMap<String,String>();
hmap.put("string","success");
return hmap;
}
第三种:单独对某个方法设置响应头
代码语言:javascript复制@RequestMapping("/test")
@CrossOrigin("http://localhost:8080")
public Map<String,String> v(){
Map<String,String> test = new HashMap<String,String>();
test.put("test","success");
return test;
}
通过上述方法即可将跨域问题解决掉 end