SpringBoot接口cors跨域访问

方式一 CorsFilter.java

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 CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }

    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        // 1允许任何域名使用
        corsConfiguration.addAllowedOrigin("*");
        // 2允许任何头
        corsConfiguration.addAllowedHeader("*");
        // 3允许任何方法(post、get等)
        corsConfiguration.addAllowedMethod("*");
        return corsConfiguration;
    }
}

方式二

在Controller类或方法上贴上注解 @CrossOrigin(origins = "*")

调整顺序

@Bean
public FilterRegistrationBean<Filter> mtFilter(@Qualifier("corsFilter") Filter corsFilter) {
    FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>();
    registration.setFilter(corsFilter);
    registration.addUrlPatterns("/*");
    registration.setDispatcherTypes(REQUEST);
    registration.setName("corsFilter");
    // before sso
    registration.setOrder(1);
    return registration;
}

浏览器控制台测试

$.ajax({
    url: "http://localhost:8080/hello",//发送的路径
    type: "get",
    contentType: "application/json", 
    dataType:"json",//服务器返回的数据类型
    success: function(data) {
        if(data.code===200){
            alert("已提交成功");
        } else {
            console.log(data);
        }
    },
    error: function (data){
        alert("提交失败");
    }
});

最后更新于

这有帮助吗?