vue 解决跨域问题(开发环境)[通俗易懂]

vue 解决跨域问题(开发环境)[通俗易懂]一、什么是跨域问题同源:域名,协议,端口均相同不同源就是跨域,比如你的前端为localhost:9528,后端为localhost:8080,此时前端去访问后端接口就会产生跨域问题,因为端口不同。这里不详细讲,可参考百度百科-同源策略。二、如何解决跨域问题前后端都可以解决,这里仅提供vue的前端跨域解决方案:前端vue.config.js配置如下,然后保证在你访问后端接口时加个前缀/api。devServer:{port:port,open:false,ov

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、什么是跨域问题

同源:域名,协议,端口均相同

不同源就是跨域,比如你的前端为localhost:9528,后端为localhost:8080,此时前端去访问后端接口就会产生跨域问题,因为端口不同。

这里不详细讲,可参考百度百科-同源策略

二、如何解决

跨域问题前后端都可以解决,这里仅提供vue的前端跨域解决方案:

前端vue.config.js配置如下,然后保证在你访问后端接口时加个前缀/api

devServer: { 
   
    port: port,
    open: false,
    overlay: { 
   
      warnings: false,
      errors: true
    },
    proxy: { 
    // vue2.x版本为 proxyTable,vue3.x为proxy。
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      '^/api': { 
   
        target: 'http://localhost:9999', // 这里的端口是后端端口
        changeOrigin: true,
        secure: false,  // 如果是https接口,需要配置这个参数为true
        pathRewrite: { 
     // 路径重写
          '^/api':''
        }
      }
    }
  }

三、例子

以下例子访问接口的时候都会保证访问的路径为:/api/about/first,包含前缀/api

例1 以axios为例

axios.get('/api/about/first', function (res) { 
    
   console.log(res) 
})

例2 以 vue-element-admin为例

request.js:baseURL这里不写 baseURL

const service = axios.create({ 
   
  // baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 10000 // request timeout
})

api/xxx.js: 在接口这里加前缀

import request from '@/utils/request.js'

export default { 
   
  getFirst() { 
   
    return request({ 
   
      url: '/api/about/first',
      method: 'get'
    })
  }
  }

vue.config.js:

devServer: { 
   
    port: port,
    open: false,
    overlay: { 
   
      warnings: false,
      errors: true
    },
    proxy: { 
   
      // change xxx-api/login => mock/login
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      '^/api': { 
   
        target: 'http://localhost:9999', // 这里的端口是后端端口
        changeOrigin: true,
        secure: false,  // 如果是https接口,需要配置这个参数为true
        pathRewrite: { 
   
          '^/api':''
        }
      }
    }
  }

例3 仍以 vue-element-admin为例

request.js:baseURL这里加前缀

const service = axios.create({ 
   
  baseURL: '/api', // url = base url + request url process.env.VUE_APP_BASE_API+'api'
  withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // request timeout
})

api/xxx.js:这里不加前缀

import request from '@/utils/request.js'

export default { 
   
  getFirst() { 
   
    return request({ 
   
      url: '/about/first',
      method: 'get'
    })
  }
  }

vue.config.js:

devServer: { 
   
    port: port,
    open: false,
    overlay: { 
   
      warnings: false,
      errors: true
    },
    proxy: { 
   
      // change xxx-api/login => mock/login
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      '^/api': { 
   
        target: 'http://localhost:9999', // 这里的端口是后端端口
        changeOrigin: true,
        secure: false,  // 如果是https接口,需要配置这个参数为true
        pathRewrite: { 
   
          '^/api':''
        }
      }
    }
  }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192600.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaScript 算法 — 贪心算法

    JavaScript 算法 — 贪心算法文章目录贪心算法例题一:分饼干例题二:买卖股票的最佳时机II贪心算法贪心算法是算法设计的一种方法。期盼通过每个阶段的局部最优选择,从而达到全局的最优,但最后的结果不一定最优。例题一:分饼干 /** *@param{number[]}g胃口 *@param{number[]}s饼干尺寸 *@return{number} */ varfindContentChildren=function(g,s){ constmysort=(a,

    2022年6月18日
    28
  • vue删除对象的某个属性(js怎么删除对象中的某个元素)

    微信小程序开发交流qq群173683895承接微信小程序开发。扫码加微信。实现代码:vardata={a:1,b:2,c:3}for(varitemindata){if(item==’b’){deletedata[item];}}console.log(‘data:…

    2022年4月11日
    50
  • 宝塔分销源码_云进销存ERP开发教程

    宝塔分销源码_云进销存ERP开发教程大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套电商ERP进销存系统源码。运行环境服务器宝塔面板PHP5.6Mysql5.6LinuxCentos7以上文字教程下载源码,宝塔添加一个站点,创建一个数据库,导入数据库文件目录下的taoydm.sql修改数据库链接文件application\config\database.php(记得不要用记事本修改,否则可能会出现验证码显示不了问题,建议用Notepad++)压缩codes目录下的源码上传到宝塔新建网站的根目录后解压缩默认后

    2026年1月31日
    5
  • 全球最大手游源码共享网站_传奇手游开发定制

    全球最大手游源码共享网站_传奇手游开发定制今天分享个最简单,最直接的游戏源码和教程最容易搭建的一键端,改几个IP就可以了,纯小白也能搭建成功。服务器系统:win82008企业版我的配置:2H4G2M教程开始:直接解压到D盘解压完的路径是这样的D:\MTJ(记得检查下,不要有任何操作)第一步,打开【JAVA一键环境设置】,点击一键【环境变量】,设置成功第二步,打开【phpStudy】文件,打开文件夹【huluxia】把里面的文件…

    2022年9月25日
    5
  • java ee eclipse使用教程(使用maven创建web项目)

    笔者开发javaee项目时惯用myeclipse,但由于个人笔记本性能较低,myeclipse对内存的消耗极大,所以考虑换成eclipse开发。本文介绍eclipse配置javaee开发环境的一些体会。配置tomcat与myeclipse配置tomcat的方式不同,eclipse需要先安装tomcat插件,再指定tomcat的路径。第一步:将解压后的zip文件置于eclipse/plugins目录…

    2022年4月10日
    131
  • linux系统下安装软件的命令(在linux下安装win系统)

    rabbitMq是用erlang分布式语言开发的,故需先安装erlang下载erlang的tar包:erlang下载首先连接到linux,切换至root用户,并cd至usr/local目录下,在该目录下使用如下命令新建erlang文件夹cd/usr/locallsmkdirerlang使用如下命令给文件夹授权//给local赋予读写权限chmod777local/…

    2022年4月11日
    77

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号