使用 webpack的方式开发的时候,前台开发过程中需要调用很多后台的数据接口,但是通常前后台分离的开发方式,后台的接口数据很可能是不方便或者是不能在前端同学的电脑上运行的,也就出现了所谓的跨域问题。

当然,开发过程中可以使用模拟的json数据来替代,但是实际的测试环境,以及联调环节还是必须要运行后台开发人员的数据比较保险,特别是存在条件式的判断等问题的时候。

其实我们此时只要对脚手架的配置文件进行简单的修改就可以实现了。

第一步,实现跨域代理请求。

修改 /config/index.js 里面的 dev下的proxytable

  1. /**
  2. * 前端开发数据交互node端代理的说明
  3. * 示例中: /api/act 代表接口的基本地址
  4. * @target: 目标服务器的地址
  5. * @ changeOrigin: 是否跨域(一般都可以设置为true)
  6. * @ pathRewrite: 将当前路径,重定向到目标路径,可以用于调试
  7. * 以下示例,即可将 this.$http.get('/api/act',...) 转发到 this.$http.get('http://localhost:8080/static/mock',...)
  8. */
  9. proxyTable: {
  10. '/api/act': {
  11. target: 'http://localhost:8080/',
  12. changeOrigin: true,
  13. pathRewrite: {
  14. '^/api/act': '/static/mock'
  15. }
  16. }
  17. }

经过以上设置,即可在vue文件中使用

this.$http.get('/api/act/xxx.json') 的方式请求数据,请求会自动转发到 项目目录下的 /static/mock/xxx.json

如果需要连接测试同学的服务器(通常都是局域网),就可以将上面的 target 修改为测试同学的ip及端口即可。 当然 接口规则遵循restFull最好。

第二步,实现请求类型的转发。

此时,还存在一个问题,虽然以上代理解决了请求转发的问题,能确保测试环境迁移到生产环境无须再次修改接口名称。但是标准的请求协议,可不能都用get,所以如果我们的数据是自己编写的静态json模拟数据,那它只能接受get请求,对于post put delete 等是无法正确相应的。 所以,接下来我们还需要实现将所以类型的请求转发为get请求,这样在测试环境,就可以尽情的使用静态的json文件来模拟各种请求的数据了。

在/build/dev-server.js中 大约 46行

// proxy api requests
Object.keys(proxyTable).forEach(function (context) {
的上方,增加请求类型代理的内容
  1. // proxy all method to GET
  2. app.use(function(req,res,next){
  3. req.method = 'GET';
  4. next();
  5. });

这样,就可以实现所有的请求类型全部被转为get请求进行了。 而与后台联调的时候,请求真实的接口时,请注意将这里注释掉,并重启服务。否则所有的请求都会变成get哦。

好了,这样就完美的实现了,前后端完全分离调试数据的功能了。

vue-cli 前端开发,后台接口跨域代理调试问题的更多相关文章

  1. Next.js 配置接口跨域代理转发

    使用 create-next-app 创建的 Next.js 项目配置接口跨域代理转发需要用到 custom server 功能. 先安装好 express 和 http-proxy-middlewa ...

  2. 用 Nokitjs 解决前端开发中的跨域问题

    问题 在开发一些「单页应用」时,通常会使用 Ajax 和服务器通讯,比如 RESTful API,通常「前端」和「服务端 API」可能是有不同人员在负责,也不在同一个工程下,那么开发过程中就可能会遇到 ...

  3. vue proxyTable 接口跨域请求调试

    在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable: 在 config/index.js 配置文件中 dev: { env: requir ...

  4. vue proxyTable 接口跨域请求调试(五)

    在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable: 在 config/index.js 配置文件中 dev: { env: requir ...

  5. Vue proxyTable 解决开发环境的跨域问题

    在 config/index.js 配置文件中,添加 dev: { proxyTable: { '/ssp/withdraw': { target: 'http://dev.home.phiwifi. ...

  6. Nginx解决前端调用后端接口跨域问题

    1.项目中遇到的问题描述: 前端调用zuul统一网关服务接口,请求状态码200,但是无返回数据. 浏览器控制台报错信息:No  Access-Control-Allow-Origin header i ...

  7. 转换:使用vue-axios和vue-resource解决vue中调用网易云接口跨域的问题

    本人配置成功https://segmentfault.com/a/1190000011072725

  8. 前端vue开发中的跨域问题解决,以及nginx上线部署。(vue devServer与nginx)

    前言 最近做的一个项目中使用了vue+springboot的前后端分离模式 在前端开发的的时候,使用vue cli3的devServer来解决跨域问题 上线部署则是用的nginx反向代理至后台服务所开 ...

  9. vue开发环境配置跨域,一步到位

    本文要实现的是:使用vue-cli搭建的项目在开发时配置跨域,上线后不做任何任何修改,接口也可以访问,前端跨域解决方案 production:产品 生产环境 development:开发 开发环境 1 ...

随机推荐

  1. Knapsack I 竟然是贪心,证明啊。。。。

    Knapsack I Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitSt ...

  2. Python中wx.FlexGridSizer

    FlexGridSizer是GridSizer的一个更灵活的版本.它与标准的GridSizer几乎相同,除了下面3点例外: 1.每行和每列可以有各自的尺寸.2.默认情况下,当尺寸调整时,它行和列整体改 ...

  3. css3制作网页中常见的小箭头

    /* css3三角形(向上 ▲) */ div.arrow-up { width:0px; height:0px; border-left:5px solid transparent;  /* 右透明 ...

  4. 使用微软URLRewriter.dll的url实现任意后缀名重写

    <?xml version="1.0"?> <!--先引用URLRewriter.dll,放置于Bin目录--> <configuration> ...

  5. 学习笔记之CSS样式(选择器背景字体边框绝/相对、固定位置and分层流等)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Hadoop技术之Hadoop HA 机制学习

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:温球良 导语 最近分享过一次关于Hadoop技术主题的演讲,由于接触时间不长,很多技术细节认识不够,也没讲清楚,作为一个技术人员,本 ...

  7. C# 通配符转正则

    可以使用下面代码把通配符转正则字符串 public static class WildcardRegexString { /// <summary> /// 通配符转正则 /// < ...

  8. 【广告】win10 uwp 水印图床 含代码

    本文主要是广告我的软件. 图床可以加速大家写博客上传图片的时间,通过简化我们的操作来得到加速. 在写博客的时候,我们发现,我们需要上传一张图片,需要先打开图片,然后选择本地图片,然后上传. 但是我经常 ...

  9. 【转】Gvim配置(Windows and Linux)for C++|gvim编译运行c/c++程序

    转载地址:http://blog.csdn.net/onepiecehuiyu/article/details/8934366 http://mawenhao19930620.blog.163.com ...

  10. Linux入门(8)——Ubuntu16.04安装sublime text 3并配置Python开发环境

    打开终端,添加sublime text 3的仓库: 按enter键继续 更新软件库: sudo apt-get update 安装Sublime Text 3: sudo apt-get instal ...