SpringBoot之Cors跨域
跨域主要是针对js和ajax的,使资源在【协议+主机名+端口号】不同的情况下也能相互访问
实现跨域有两种方式
1.JSONP 常见的前端跨域解决方案,但局限性大,只支持GET请求
2.Cors 支持多种请求,可完全替代JSON,是一种全局配置,需要实现WebMvcConfigurer接口
代码演示
//跨域处理 (全局配置)
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") //所有的请求都会被处理跨域
.allowedOrigins("*") //允许谁访问
.allowedMethods("POST","GET","PUT","OPTIONS", "DELETE") //允许访问的方法
.allowedHeaders("*") //允许请求头
.maxAge(1800); //探测请求类型的有效期 默认是1800s
}
//也可在方法上用 @CrossOrigin(value = "http://localhost:8081")
WebMvcConfigurer接口下的其他方法
@Configuration
public class MvMvcConfig implements WebMvcConfigurer {
//默认访问路径 index.html
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("").setViewName("index");
}
//配置静态资源,static路径下的资源访问不会被拦截
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
WebMvcConfigurer.super.addResourceHandlers(registry);
}
//注册拦截器,定义好拦截器需要通过这里添加注册才会生效
@Override
public void addInterceptors(InterceptorRegistry registry) {
//表示不会拦截的路径
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns(
"/login",
"/register",
"/static/**");
WebMvcConfigurer.super.addInterceptors(registry);
}



