做过前端的都知道跨域问题。

CORS(Cross-Origin Resource Sharing)”跨域资源共享”,是一个W3C标准,它允许浏览器向跨域服务器发送Ajax请求,打破了Ajax只能访问本站内的资源限制。

想要做到跨域访问,需要对Spring进行配置。配置可以在三个层面进行:

  1. 全局设置
  2. controller设置
  3. controller方法设置

方式1:全局配置

新建一个配置类,继承WebMvcConfigurationSupport类,覆写addCorsMappings方法。

    @Override
    public void addCorsMappings(CorsRegistry registry) {
    	
    	registry.addMapping("/**")
                .allowCredentials(true)
                .allowedMethods("*")
                .allowedOrigins("*")
                .allowedHeaders("*");
    	super.addCorsMappings(registry);
    }

这样设置以后,对于Methods来讲,包括options、put、delete等非post请求,也可以得到正确的响应。

方式2:Controller配置

在controller的方法头,可以使用@CrossOrigin来实现跨域设置。例如:

...
@CrossOrigin(origins="*", maxAge=3600)
@RestController
public class UserController {
    ...
}

在@CrossOrigin标注中,同样可以设置credentials和methods等内容。

方式3:Controller方法配置

对于controller的方法,同样可以加@CrossOrigin来设置跨域的处理方式,与方式2相同。这样做会使得API应用更灵活,使得同一个controller内的不同方法都可以有不同的跨域处理方式。