7.CORS支持

一、Web 开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS 等等 CORS 与 JSONP 相比

1、JSONP 只能实现 GET 请求,而 CORS 支持所有类型的 HTTP 请求。

2、使用 CORS,开发者可以使用普通的 XMLHttpRequest 发起请求和获得数据,比起 JSONP 有更好的错误处理。

3、JSONP 主要被老的浏览器支持,它们往往不支持 CORS,而绝大多数现代浏览器都已经支持了 CORS

浏览器支持情况

  • Chrome 3+

  • Firefox 3.5+

  • Opera 12+

  • Safari 4+

  • Internet Explorer 8+

二、在 spring MVC 中可以配置全局的规则,也可以使用@CrossOrigin 注解进行细粒度的配置。

全局配置:

@Bean
    public WebMvcConfigurer corsConfigurer() {

        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/api/**").allowedOrigins("http://localhost:8080");
            }
        };
    }

或者使用下面的方式

具体实现:

CustomCorsConfiguration.java

ApiController.java

启动测试:

可以通过其他程序进行ajax请求测试

也可以使用postmans发送post测试

细粒度配置:

@CrossOrigin 注释

直接加在controller

资料

WebMvcConfigurerAdapter 在Spring5.0已被废弃

Last updated

Was this helpful?