vue axios跨域请求后台数据

最近刚开始学习web网页开发,同事说公司开发使用在vue框架就学习一下编写个小demo。本次采用前后端分离项目,后端是springmvc。

问题来了

后端项目接口经过postman测试通过,在后端框架中测试也是通过,但是在vue项目中请求就是没有相应。当不同服务器、不同端口访问数据时涉及到跨域支援跨域问题。
在未配置跨域代理请求之前通过axios请求后台数据,是下面这样的
在这里插入图片描述

提示“No ‘Access-Control-Allow-Origin’ header is present on the requested resource”,出现’Access-Control-Allow-Origin’这个关键词及出现跨域。通过配置vue跨域代理请求可解决。

配置代理

修改vue项目中config—>index.js文件,在‘proxyTable’大括号中添加配置即可,如下

module.exports = {
  dev: {
    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {     //axios跨域处理
      '/api': {       //自定义地址  所有/api在请求都会跳转到target路径中
        target:'http://localhost:8081/', //服务器地址
        changeOrigin:true, //允许跨域
        pathRewrite:{
          '^/api': ''
        }
      }
    }
}
....以下省略
}

测试请求

配置完成后再次发送请求,如果后台没有问题就会请求成功并顺利拿到后台数据。
大部分同学到这个地方差不多就解决问题了。我在get请求成功返回数据,

问题又来了

但是!!!
可是!!!!
post不行 一直返回403 没有权限,到底是后端的问题还是前段的问题呢,postman 请求通的啊,为了验证后台没有问题,我在我的Android项目中写了一个测试请求,post可以顺利拿到数据。 why? 为什么 Android又可以呢?
什么原因呢,不是说好在好了吗??? 研究一翻不知所云,找到了公司唯一在前端同学,得出结论是没有问题,那问题到底出在哪里呢? 为了探究前端是否真的没有问题,我用PHP写了一个测试接口,服务器跑起来,修改跨域地址,测试请求数据,完美测试通过,PHP接口get、post都通过了。
怎么办什么原因呢,实在没有方法我把我的测试地址给前段的同学让他在他们项目中帮我请求一下,没错还是返回该死的403。此时可以99%确定是后台的问题了。

切换后台项目

在引包配置文件中看到如下:
在这里插入图片描述
CorsFilter 引用包不就是spring用来支持跨域的包吗,为什么标红了呢,会不会就是它的问题,由于前期后端项目是其他人搭建的,没有太注意这里的问题,果断将红色部分全部注释,再次请求,难以掩饰内心的激动,终于通了,post请求返回了数据。

后台跨域参考:
CORS filter解决ajax跨越问题解决及源码分析.

解决问题很简单,找到问题才是关键。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中使用axios进行跨域请求,你可以按照以下步骤操作: 1. 安装axios:在命令行中运行 `npm install axios`。 2. 创建一个API请求文件:在src目录下创建一个新的文件夹,比如 `api`,然后在该文件夹下创建一个名为 `index.js` 的文件。 3. 在 `index.js` 文件中导入axios并创建一个实例: ```javascript import axios from 'axios'; const instance = axios.create({ baseURL: 'http://api.example.com', // 设置你的API请求的基本URL timeout: 5000, // 设置请求超时时间 }); export default instance; ``` 4. 在你需要发送请求的组件中导入刚才创建的实例: ```javascript import api from '@/api/index.js'; // 然后使用api进行请求 api.get('/example') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); ``` 5. 处理跨域问题:在Vue的配置文件 `vue.config.js` 中进行跨域配置。如果没有该文件,请在项目根目录下创建一个。 ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://api.example.com', // 设置你的API请求的基本URL changeOrigin: true, pathRewrite: { '^/api': '', // 如果你的API路径有前缀,可以在这里进行替换 }, }, }, }, }; ``` 以上配置将所有以 `/api` 开头的请求代理到 `http://api.example.com`,并解决跨域问题。 这样就可以在Vue项目中使用axios进行跨域请求了。请注意,实际的API URL和路径需要根据你的项目和后端API进行相应的调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值