vue-cli3.0如何解决访问接口跨域问题?

本文介绍如何通过配置vue.config.js文件中的代理(proxy)来解决Vue应用中的跨域问题,确保前端可以顺利调用后端接口。

我们在使用vue请求接口时,经常会遇到跨域问题

前端在vue中访问报错跨域信息
但是后端已经设置了跨域

后端设置跨域

这时候就需要配置代理(proxy)

在根目录下创建vue.config.js

在这里插入图片描述

代码如下
module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:4000/',  // 此处为接口地址
        changeOrigin: true,   // 是否允许跨域
        pathRewrite: {  // 重写路径 目的是把/api开始的接口重写 (如/api/users 改成/users)
          '^/api': '/'
        }
      }
    }
  }
}
注:如果不设置pathRewrite,上面请求的接口地址则为http://localhost:4000/api/xxx,xxx为接口地址(如users)

这个时候你就可以去请求后端接口了

请求后端接口

注:端口前应加 /api (也就是在vue.config.js中proxy下配置的字段)

这个时候就可以请求到数据了

请求接口

你学费了吗

给楼主点个关注吧,不定期分享干货

前端Vue项目本地正常访问接口,部署到服务器后提示,可采用以下解决办法: ### 使用Nginx处理 在服务器上使用Nginx作为Web服务器,对问题进行处理。由于数据与Vue前端项目在同一IP地址但不同端口号,需要读取数据,可借助Nginx进行处理。在Nginx的配置文件中进行如下配置: ```nginx server { listen 8081; server_name localhost; # 匹配以/nginxGetTreeListForSoilByRegion/开头的请求 location ^~ /nginxGetTreeListForSoilByRegion/ { # 访问远程接口数据 # proxy_pass 你远程接口的地址 # 访问本地json http://localhost:8081 代表着你项目在服务器的地址 proxy_pass http://localhost:8081/static/testData/GetTreeListForSoilByRegion.json; } location / { root D:/peixun/nginx-1.16.0/html/dist; index index.html index.htm; } } ``` 上述配置中,`listen`指定前端服务启动后访问用的端口,`server_name`为访问前端服务的IP,`location`块用于匹配不同的请求路径并进行相应的代理转发。对于特定路径的请求,可通过`proxy_pass`将其转发到远程接口或本地JSON文件。对于根路径的请求,指定前端`dist`文件夹的绝对路径,并设置默认的索引文件[^1][^4]。 ### 处理vue.config.js文件 若使用vue-cli 3脚手架创建的Vue项目,项目创建完毕后可能没有`vue.config.js`文件。该文件可用于本地测试解决前后端问题,但在打包项目时需注释其中关于的代码。示例配置如下: ```javascript module.exports = { publicPath: './', runtimeCompiler: true, // devServer:{ // port:83, // proxy:{ // '/api':{ // target:"http://localhost:8086", // changOrigin: true, // 允许 // pathRewrite:{ // '^/api':'' // 重写路径 // } // } // } // } } ``` 在本地开发时,可取消注释`devServer`部分的代码,通过代理解决问题。打包部署时,需将这部分代码注释掉,避免出现问题[^2]。 ### 手动创建配置文件 在vue-cli 3.0+版本中,项目目录被简化,若项目里没有`config`文件夹和配置项,需手动在项目根目录下创建`vue.config.js`文件,并在其中编写`proxyTable`配置。vue-cli的`proxyTable`使用的是`http-proxy-middleware`中间件,其原理是让浏览器将请求发给自己的服务端,再由服务端转发给要的服务端,做一层代理[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值