Springboot跨域问题三种解决方案

网友投稿 291 2022-12-10


Springboot跨域问题三种解决方案

使用vue+axios+spring boot前后端分离项目时会出现跨域问题

解决方式:

一: 全局配置

/**

* 就是注册的过程,注册Cors协议的内容。

* 如: Cors协议支持哪些请求URL,支持哪些请求类型,请求时处理的超时时长是什么等。

*/

@Override

public void addCorsMappings(CorsRegistry registry) {

registry

.addMapping("/**")// 所有的当前站点的请求地址,都支持跨域访问。

.allowedMethods("GET", "POST", "PUT", "DELETE") // 当前站点支持的跨域请求类型是什么。

.allowCredentials(true) // 是否支持跨域用户凭证

.allowedOrigins("*") // 所有的外部域都可跨域访问。 如果是localhost则很难配置,因为在跨域请求的时候,外部域的解析可能是localhost、127.0.0.1、主机名

.maxAge(60); // 超时时长设置为1小时。 时间单位是秒。

}

二: 针对单个接口,使用注解@CrossOrigin

/**

* @desc

* @author guozhongyao

* @date 2020/03/22 17:05

*/

@RestController

@RequestMapping("/user")

@RequiredArgsConstructor

@CrossOrigin(origins = "*",maxAge = 3600)

public class UserController {

final UserMapper userMapper;

@GetMapping("/getOne/{id}")

public User getOne(@PathVariable("id") Integer id) {

return userMapper.getById(id);

}

}

三: 自定义跨域过滤器

1,编写过滤器

/**

* @desc 跨域过滤器

* @author guozhongyao

* @date 2020/3/30 15:54

*/

class CrosFilter implements Filter {

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

HttpServletResponse res = (HttpServletResponse) response;

//*号表示对所有请求都允许跨域访问

res.addHeader("Access-Control-Allow-Origin", "*");

res.addHeader("Access-http://Control-Allow-Methods", "*");

chain.doFilter(request, response);

}

}

2, 注册过滤器

/**

* @desc 注册自定义跨域过滤器

* @author guozhongyao

* @date 2020/3/30 15:52

*/

@Bean

public FilterRegistrationBean registerFilter(){

FilterRegisthttp://rationBean bean = new FilterRegistrationBean();

bean.addUrlPatterns("/*");

bean.setFilter(new CrosFilter());

return bean;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java8中的LocalDateTime和Date一些时间操作方法
下一篇:java如何获取本机IP地址
相关文章

 发表评论

暂时没有评论,来抢沙发吧~