前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >webpack配置proxy反向代理,解决跨域问题

webpack配置proxy反向代理,解决跨域问题

作者头像
青梅煮码
发布2023-01-14 16:02:37
2.1K0
发布2023-01-14 16:02:37
举报
文章被收录于专栏:青梅煮码青梅煮码

目的:为了解决前端和后端联调数据,出现的跨域问题,通过配置反向代理,可以更好的联调数据

常见跨域场景

(1)同一域名,不同端口 http://www.qmblog.cn:8000/a.js http://www.qmblog.cn/b.js (2)同一域名,不同协议 http://www.qmblog.cn/a.js https://www.qmblog.cn/b.js (3)域名和域名对应相同ip http://www.dqmblog.cn/a.js http://127.0.0.1/b.js (4)不同域名 http://www.demo1.com/a.js http://www.demo2.com/b.js

前端常用解决方案

(1)通过jsonp跨域:只能发get请求,数据量不能超过4K (2)跨域资源共享(CORS):需服务端设置Access-Control-Allow-Origin即可,前端无须设置,若要带cookie请求:前后端都需要设 (3)反向代理:在浏览器中创建了代理服务器,缺点渲染效率降低

反向代理

配置反向代理
代码语言:javascript
复制
//vue-cli3.0 里面的 vue.config.js做配置
const url = 'http://192.168.0.111:9999' //服务器端接口地址
module.exports = {
  //...
  devServer: {
    proxy: {
        '/api': {                //这里最好有一个 /
            target: url,         // 服务器端接口地址
            ws: true,            //如果要代理 websockets,配置这个参数
            secure: false,       // 如果是https接口,需要配置这个参数
            changeOrigin: true,  //是否跨域
            pathRewrite:{'^/api':''}
        }
    }
  }
};

此时访问的接口地址在本地被解析为localhost:8080/api/***

访问的真实地址是http://192.168.0.111:9999***

正向代理隐藏真实客户端地址,反向代理则隐藏真实服务端地址

详情

http://192.168.0.111:9999上有后端服务的话,你可以这样启用代理:

代码语言:javascript
复制
module.exports = {
  //...
  devServer: {
    proxy: {
      '/api': 'http://192.168.0.111:9999'
    }
  }
};

请求到/api/users现在会被代理到请求http://192.168.0.111:9999/api/users

如果你不想始终传递 /api ,则需要重写路径:

代码语言:javascript
复制
module.exports = {
  //...
  devServer: {
    proxy: {
      '/api': {
        target: 'http://192.168.0.111:9999',
        pathRewrite: {'^/api' : ''}
      }
    }
  }
};

默认情况下,不接受运行在HTTPS上,且使用了无效证书的后端服务器。如果你想要接受,修改配置如下:

代码语言:javascript
复制
module.exports = {
  //...
  devServer: {
    proxy: {
      '/api': {
        target: 'https://other-server.example.com',
        secure: false
      }
    }
  }
};

如果你想要代理多个路径特定到同一个 target 下,你可以使用由一个或多个「具有 context 属性的对象」构成的数组:

代码语言:javascript
复制
module.exports = {
  //...
  devServer: {
    proxy: [{
      context: ['/auth', '/api'],
      target: 'http://192.168.0.111:9999',
    }]
  }
};
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常见跨域场景
  • 前端常用解决方案
  • 配置反向代理
  • 详情
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com