vue跨域访问spring rest服务

来源:互联网 发布:phpcurl post json 编辑:程序博客网 时间:2024/05/20 08:01

vue跨域访问spring rest服务

使用前后端分离的方式去做,就会遇到跨域访问的问题。默认情况下,js访问都必须是同域访问,这是为了安全考虑。那么跨域要怎么解决呢?

后端服务

我们这里使用spring来提供后端服务。然后有三种方法进行支持跨域。服务端本质上的跨域是增加response header。

  1. 增加filter,拿到response进行增加

  2. 配置@RestControllerAdvice和集成ReponseAdvice接口,来实现对于特定类或方法的返回做出修改

  3. 从spring4.2开始,增加@CrossOrigin注解来支持跨域访问。有两种方式:

    • 增加到方法或者类上面, 单个配置

    • 通过全局配置

前端服务

查了一下,解决的方式也是有三种:

  1. 使用nginx做反向代理,这样就避免了跨域访问的问题。当然还有其他的工具可以做到反向代理。

  2. 使用node做一下跨域访问,来支持js的访问

  3. 使用jsonp类似的方式,比如axios,来进行get/post

可能出现的问题

  1. 在本机上测试不了@CrossOrigin效果,因为在默认的处理器DefaultCorsProcessor逻辑中,如果不跨域是不增加header的.

  2. axios的post默认是application/json格式的, spring 的接受参数默认格式并不是这个,所以可能参数传不过去。解决方法也是有两种:

    1. axios是支持两种格式的。可以参考链接
    2. spring mvc增加header
  3. 代码在task-list和task-list-vue,尚未写完