Vue代理请求数据出现404

当使用代理解决跨域问题出现404错误时,一般有两种原因。

1. 需要进行pathRewrite重写

比如:你想访问的真实地址为http://39.98.123.211/user/list,你请求的url为/api/user/list
下面是你的代理程序

 module.exports = {
   lintOnSave:false,
   //配置代理跨域
   devServer:{
     proxy:{
       "/api":{
         target:"http://39.98.123.211",
       }
    }
  }
 }

如果没有对/api重写,那么代理完你真实的地址则为:http://39.98.123.211/api/user/list,明显多了/api,
因此会出现404错误。我们进行代理时,路径中有/api,则会使用http://39.98.123.211,
再加上url,则就为我们的请求地址 http://39.98.123.211/api/user/list。所以要对/api重写,
如果你的真实路径中正好为http://39.98.123.211/api/user/list,包含了/api那就不用重写。因此将代码改为:

module.exports = {
   lintOnSave:false,
   //配置代理跨域
   devServer:{
     proxy:{
       "/api":{
         target:"http://39.98.123.211",
         pathRewrite:{
         	'^/api':'',
         }
       }
    }
  }
 }

如果无法解决404错误,则使用第二种方法。

2.将代理代码放入config文件夹下的index.js文件中

如果你是vue3项目则在vue.config.js中写代理即可,如果你是vue2项目,代理请求出现404,
且第一种方法无效,则将代理代码写入config文件夹下的index.js中的proxyTable:{}中

module.exports = {
  dev: {

    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
      //配置代理跨域
          "/api":{
            target:"http://39.98.123.211",


      },
    },

由于我的真实地址中有/api所以就没进行/api重写。
记住代理写完,要重写运行项目。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐