springboot跨域處理
一、什麼是跨域(CORS)
跨域(CORS)是指不同域名之間的互相訪問,本地伺服器去訪問另一個伺服器的資源,這個時候就會出現跨域訪問的問題,是由瀏覽器對於JavaScript所定義的安全限制策
同域:
- 同一協議, 如http或https
- 同一IP地址, 如192.168.1.2
- 同一埠, 如8080
以上三個條件中有一個條件不同就會產生 跨域問題
二、跨域解決方案
1.前端解決方案
1.1 使用 JSONP 來支援跨域的請求
1.2 使用NodeJS伺服器做為服務代理
2.後端解決方案
這裡有三種配置方式
2.1 配置過濾器
@Configuration
public class GlobalCorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("*");
config.setAllowCredentials(true);
config.addAllowedMethod("*");
config.addAllowedHeader("*");
config.addExposedHeader("*");
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
return new CorsFilter(configSource);
}
}
2.2 配置攔截器
@Configuration
public class MyConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods(httpMethod.GET.name(),httpMethod.POST.name(),httpMethod.PUT.name(),httpMethod.PATCH.name(),httpMethod.DELETE.name())//允許訪問的型別
.allowCredentials(true)
.allowedHeaders("*")
.allowedOrigins("*")
.maxAge(3600);
}
}
2.3單個請求跨域請求
@RequestMapping("/hello")
@CrossOrigin("http://localhost:8080")
public String hello( ){
return "Hello World";
}
另:本人剛開始寫部落格,小白,想用部落格記錄問題點,歡迎大佬們評論不足的地方,多