SpringBoot中配置攔截器返回false時,前臺出現跨域問題

服務端解決跨域

1. 使用 addCorsMappings方式
  • sping中可以配置addCorsMappings, 如下
    @Configuration
    @EnableWebMvc
    public class ConfigurerAdapter implements WebMvcConfigurer {
    
            @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowCredentials(true)
                    .allowedHeaders("*")
                    .allowedOrigins("*")
                    .allowedMethods("GET","POST","PUT","DELETE");
        }
        }
    
  • 此種配置 , 生效在攔截器後 , 若我們設置了攔截器 , 則此種方式會失效
2. 使用 corsFilter方式
  • 可以使用設置corsFilter的方式解決跨域問題 , 因爲FilterInterceptor執行 , 所以不會有上述的失效問題
  • 代碼設置如下
    @Configuration
    @EnableWebMvc
    public class ConfigurerAdapter implements WebMvcConfigurer {
    @Bean
    public CorsFilter corsFilter() {
       CorsConfiguration config = new CorsConfiguration();
       // 設置允許跨域請求的域名
       config.addAllowedOrigin("*");
       // 是否允許證書 不再默認開啓
       // config.setAllowCredentials(true);
       // 設置允許的方法
       config.addAllowedMethod("*");
       // 允許任何頭
       config.addAllowedHeader("*");
       //預檢請求頭信息描述
       //config.addExposedHeader("token");
       UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
       configSource.registerCorsConfiguration("/**", config);
       return new CorsFilter(configSource);
     }
    }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章