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

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/)即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 2 中,可以通过配置代理服务器或者使用 JSONP 来解决前端跨域问题。 1. 配置代理服务器:可以在 Vue 的配置文件 `vue.config.js` 中配置代理服务器,将前端的请求转发给后端服务器。首先,创建一个 `vue.config.js` 文件,并添加以下内容: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://example.com', // 后端接口的域名 changeOrigin: true, pathRewrite: { '^/api': '' // 如果后端接口没有/api前缀,可以将其去除 } } } } }; ``` 上述配置将发往 `/api` 路径的请求转发给了 `http://example.com`,你可以根据实际情况修改这些配置。 2. 使用 JSONP:如果后端支持 JSONP,可以通过 JSONP 跨域来获取数据。在 Vue 中,可以使用第三方库 `vue-jsonp` 来方便地发送 JSONP 请求。首先,安装 `vue-jsonp`: ``` npm install vue-jsonp --save ``` 然后,在需要跨域请求的组件中,引入并使用 `vue-jsonp`: ```javascript import Vue from 'vue'; import VueJsonp from 'vue-jsonp'; Vue.use(VueJsonp); export default { methods: { fetchData() { this.$jsonp('http://example.com/api', { params: { // 请求参数 } }).then(response => { // 处理接口返回的数据 }).catch(error => { console.log('Error:', error); }); } } }; ``` 上述代码中,我们使用 `$jsonp` 方法发送跨域请求,并在 `then` 方法中处理接口返回的数据。 无论你选择使用代理服务器还是 JSONP,都可以解决 Vue 2 前端跨域问题。根据具体的需求和后端的支持情况,选择合适的方法来处理跨域

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐沐茶壶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值