解决前后端分离开发过程中使用axios访问后端数据出现跨域问题的解决方法AxiosError:Network Error

问题描述:

正常情况下,我的程序访问:http://localhost/fuels

效果为:

然后在vscode的vue2中访问此链接并打算获取数据:

可是却出现错误信息:

问题分析:

CORS(跨域资源共享)问题

  • 如果您的后端和前端不在同一个端口上运行(例如,后端运行在localhost:8080,而前端运行在localhost:3000),浏览器会因跨域请求而阻止访问。这种情况下,您需要在后端配置CORS。

解决方法:

我们需要在前端配置将我们前端的端口号能够跳转到指定的后端端口位置:

(1)首先我们找到vue.config.js文件

然后在 devServer里面添加如下代码:

 // 您可以继续添加其他devServer的配置项,例如:
    proxy: {
      '/': {
        target: 'http://localhost:8080',
        changeOrigin: true,
        pathRewrite: { '^/': '' }
      }
    }

具体含义解析:

  • '/': { ... }:

    • 这个配置将所有以/开头的请求都代理到后端http://localhost:8080。由于所有请求路径默认都是以/开头的,所以这会捕获所有的请求。
  • target: 'http://localhost:8080':

    • 目标后端服务器的地址,所有代理请求都将被转发到这个地址。
  • changeOrigin: true:

    • 修改请求中的Host头部为目标服务器的地址。这对某些后端服务器是必要的。
  • pathRewrite: { '^/': '' }:

    • 将请求路径中的前缀/移除。比如,前端请求http://localhost:7002/some/path会被代理为http://localhost:8080/some/path

(2)然后找到我们的main.js文件

添加如下代码:

//新添加的3行
import axios from 'axios';
// 设置 Axios 的基础 URL
axios.defaults.baseURL = '/';

具体含义解析:

axios.defaults.baseURL:

  • 这行代码设置了Axios的默认基础URL。所有通过axios发出的请求都会在路径前自动添加这个基础URL。

通过这种方式,您只需在main.js中配置一次baseURL,在项目中的所有组件都可以享受这一配置,简化了代码的维护。

(3)效果

再次重新启动程序之后效果如下:

可以发现,我们前端已经能够成功获取到后端的数据啦!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

还不秃顶的计科生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值