1.全局跨域
/**
* 跨域問題
*
* @author dereck
*/
@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);
}
}
2. 使用註解(局部跨域)
@RequestMapping("/preUser")
@CrossOrigin("http://localhost:8080")
public Map<String,String> preUser(){
Map<String,String> map = new HashMap<String,String>();
map.put("preUser","success");
return map;
}
Access-Control-Allow-Origin 表示允許哪些原始域進行跨域訪問。
Access-Control-Allow-Credentials表示是否允許客戶端獲取用戶憑據。
Access-Control-Allow-Methods 表示允許哪些跨域請求的提交方式。(例如GET/POST)
Access-Control-Expose-Headers 表示允許暴露哪些頭部信息給客戶端。
Access-Control-Max-Age 表示預檢請求 [Preflight Request] 的最大緩存時間。