解决前端请求导致的跨域错误

image
在前端请求时报跨域错误

解决方法

一、使用@CrossOrigin注解

Spring中第一种处理跨域的方式是通过@CrossOrigin注解来标记支持跨域,该注解可以添加在方法上,也可以添加在Controller 上。当添加在Controller 上时,表示Controller中的所有接口都支持跨域,具体配置如下:

@RequestMapping("/test")
@RestController
public class TestController {
    @RequestMapping("/test1")
	//origins代表的是前端工程的url
    @CrossOrigin(origins = "http://localhost:8888")
    @GetMapping("/get")
    public Books Test1(){
        return new Books(1,"666","6666",1,"7895465465465");
    }
}

@CrossOrigin注解各属性含义如下

  • allowCredentials:浏览器是否应当发送凭证信息,如Cookie。allowedHeaders:请求被允许的请求头字段,*表示所有字段。
  • exposedHeaders:哪些响应头可以作为响应的一部分暴露出来。注意,这里只可以一一列举,通配符*在这里是无效的。
  • maxAge:预检请求的有效期,有效期内不必再次发送预检请求,默认是1800秒。methods:允许的请求方法,*表示允许所有方法。
  • origins:允许的域,*表示允许所有域。

二、全局配置可访问

允许所有请求支持跨域访问,并且不限定域,但是支持持GET方法

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET");
    }
}
posted @ 2022-07-28 20:02  又一岁荣枯  阅读(1306)  评论(0编辑  收藏  举报