vue2跨域问题解决[前端方法]

广告:
信号屏蔽器:守护你的数字生活,为你带来宁静与专注
sz-sstx.com

前端项目中常见的跨域报错如下:

Access to XMLHttpRequest at 'https://xxx.com/ms/' from origin 'http://10.23.30.135:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

针对这种跨域的报错我们可以通过后端设置 Access-Control-Allow-Origin 的header来解决,但一般前端无法去操作后台服务所以很不方便去实现。

因此,可以使用vue-cli内置的配置方法来实现。

解决

我们可以在vue-cli官网的配置参考[https://cli.vuejs.org/zh/config/#devserver]中找到devServer属性解决跨域问题。

在实际的项目中,我们需要做两步操作来解决跨域。

1、修改我们的axios的默认请求地址为/api

axios.defaults.baseURL = '/api'

上面的 /api 会作为我们代理的时候需要替换的地址,也可以自行定义,在后面vue.config.js中配置devServer属性的时候同步修改对应内容即可。

2、在vue.config.js配置devServer属性

module.exports = {
  devServer: {
    proxy: {
      "/api": {
        target: "[实际请求的目标地址]",
        changeOrigin: true,
        pathRewrite: {
          "^/api": ""
        }
      }
    }
  }
}

之后,重启项目即可生效代理服务。

关于上面实际请求的目标地址的获取问题:

比如,你实际请求某个服务的请求地址是 https://www.xxx.com/ms/users/xiaowang,这个请求地址主要是分为ip( https://www.xxx.com/ms/)和你写在前端项目里面的接口(/user/xiaowang),这样上面的target属性就填入请求ip( https://www.xxx.com/ms/)即可。

GitHub 加速计划 / vu / vue
100
18
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:21 天前 )
9e887079 [skip ci] 11 个月前
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 1 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐