文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

webpack中的代理配置方法

2023-07-02 13:11

关注

这篇文章主要介绍了webpack中的代理配置方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇webpack中的代理配置方法文章都会有所收获,下面我们一起来看看吧。

作用:

解决开发环境跨域问题(不用再去配置nginx和host)

如果你有单独的后端开发服务器API,并希望在同域名下发送API请求,那么代理某些URL会很有用

下面介绍一下五种经常使用的场景

使用场景一:

请求到 /api/xxx 现在会被代理到请求 http://localhost:3000/api/xxx, 例如 /api/user 现在会被代理到请求 http://localhost:3000/api/user

module.exports = {     //...     devServer: {         proxy: {             '/api': 'http://localhost:3000'        }     } };

使用场景二

多个前缀的路径,都用一个路径来代理,使用context属性

module.exports = {     //...     devServer: {         proxy: [{             context: ['/auth', '/api'],             target: 'http://localhost:3000',         }]     } };

使用场景三

将url中的 /api替换为空串:

module.exports = {     //...     devServer: {         proxy: {             '/api': {                 target: 'http://localhost:3000',                pathRewrite: {'^/api' : ''}            }         }     } };

请求到 /api/xxx 现在会被代理到请求 http://localhost:3000/xxx, 例如 /api/user 现在会被代理到请求 http://localhost:3000/user

使用场景四:

如果想要支持https,需要配置。默认情况下,不接受运行在 HTTPS(超文本传输安全协议) 上,且使用了无效证书的后端服务器。

module.exports = {    //...    devServer: {        proxy: {            '/api': {                target: 'https://other-server.example.com',                 secure: false//是否验证SSL Certs            }        }    }};

使用场景五:

个人理解:如果想要请求静态html页面,绕过代理;对于api请求则保持代理

有时你不想代理所有的请求。可以基于一个函数的返回值绕过代理。

在函数中你可以访问请求体、响应体和代理选项。必须返回 false 或路径,来跳过代理请求。

例如:对于浏览器请求,你想要提供一个 HTML 页面,但是对于 API 请求则保持代理。你可以这样做:

module.exports = {   //...     devServer: {         proxy: {             '/api': {                 target: 'http://localhost:3000',                 bypass: function(req, res, proxyOptions) {                     if (req.headers.accept.indexOf('html') !== -1) {                         console.log('Skipping proxy for browser request.');                         return '/index.html';                     }                 }             }         }     }    };

解决跨域原理

上面的参数列表中有一个changeOrigin参数, 是一个布尔值, 设置为true, 本地就会虚拟一个服务器接收你的请求并代你发送该请求,

module.exports = {     //...     devServer: {         proxy: {             '/api': {                 target: 'http://localhost:3000',                 changeOrigin: true,             }         }     } };

vue-cli中proxyTable配置接口地址代理示例

个人理解:这个配置文件会生成一个代理服务器,用于连接前端请求,向后端api服务器发送请求

修改 config/index.js

module.exports = {     dev: {     // 静态资源文件夹     assetsSubDirectory: 'static',    // 发布路径    assetsPublicPath: '/',     // 代理配置表,在这里可以配置特定的请求代理到对应的API接口     // 使用方法:https://vuejs-templates.github.io/webpack/proxy.html     proxyTable: {         // 例如将'localhost:8080/api/xxx'代理到'https://wangyaxing.cn/api/xxx'         '/api': {            target: 'https://wangyaxing.cn', // 接口的域名             secure: false,  // 如果是https接口,需要配置这个参数             changeOrigin: true, // 如果接口跨域,需要进行这个参数配置         },         // 例如将'localhost:8080/img/xxx'代理到'https://cdn.wangyaxing.cn/xxx'         '/img': {             target: 'https://cdn.wangyaxing.cn', // 接口的域名             secure: false,  // 如果是https接口,需要配置这个参数            changeOrigin: true, // 如果接口跨域,需要进行这个参数配置             pathRewrite: {'^/img': ''}  // pathRewrite 来重写地址,将前缀 '/api' 转为 '/'。         }     },     // Various Dev Server settings     //可以在process.env.HOST中重写     host: 'localhost', // can be overwritten by process.env.HOST     //可以用process.env.PORT重写,如果接口被占用,会分配一个其他端口     port: 4200, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined }

更多参数

target:要使用url模块解析的url字符串
forward:要使用url模块解析的url字符串
agent:要传递给http(s).request的对象(请参阅Node的https代理和http代理对象)
ssl:要传递给https.createServer()的对象
ws:true / false,是否代理websockets
xfwd:true / false,添加x-forward标头
secure:true / false,是否验证SSL Certs
toProxy:true / false,传递绝对URL作为路径(对代理代理很有用)
prependPath:true / false,默认值:true - 指定是否要将目标的路径添加到代理路径
ignorePath:true / false,默认值:false - 指定是否要忽略传入请求的代理路径(注意:如果需要,您必须附加/手动)。
localAddress:要为传出连接绑定的本地接口字符串
changeOrigin:true / false,默认值:false - 将主机标头的原点更改为目标URL

关于“webpack中的代理配置方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“webpack中的代理配置方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯