Webpack 代理到代理

Posted

技术标签:

【中文标题】Webpack 代理到代理【英文标题】:Webpack proxying to a proxy 【发布时间】:2022-01-18 17:44:21 【问题描述】:

我有以下情况: 我目前正在使用浏览器扩展程序通过代理服务器 (proxy.company.co.uk:3128) 访问以 company.co.uk 结尾的任何 url 的公司资源,但我现在需要我的 webpack 开发服务器能够也可以访问这些资源。我尝试查看http-proxy-middleware repo,但只发现了一个关于此事的未回答问题和一个toProxy 标志,没有说明如何使用它。

我当前的代理配置非常基本:

devServer: 
  historyApiFallback: true,
  hot: true,
  host: '0.0.0.0',
  port: 3010,
  proxy: 
    '/api': 
      target: 'https://env-01.dev.company.co.uk/v4/',
      pathRewrite:  '^/api': '' ,
      changeOrigin: true,
    ,
  ,
,

有没有人在这样的设置上取得过任何成功,或者对如何实现这种代理到反向代理有想法?

【问题讨论】:

【参考方案1】:

对于以后遇到这种情况的人,方法是设置一个代理,并将其用作 webpack 开发服务器的 http 代理的代理,例如:

const HttpsProxyAgent = require('https-proxy-agent');
*************
devServer: 
  historyApiFallback: true,
  hot: true,
  host: '0.0.0.0',
  port: 3010,
  proxy: 
    '/api': 
      agent: new HttpsProxyAgent('http://proxy.company.co.uk:3128'),
      target: 'https://env-01.dev.company.co.uk/v4/',
      pathRewrite:  '^/api': '' ,
      changeOrigin: true,
    ,
  ,
,

请注意代理协议,根据反向代理的设置方式,您可能需要使用 http,即使您尝试调用的实际端点位于 https 上。

【讨论】:

以上是关于Webpack 代理到代理的主要内容,如果未能解决你的问题,请参考以下文章

Webpack 配置 proxy 代理解决跨域问题

在 Vue 中代理 webpack 开发服务器

我可以将 cookie 添加到 webpack 开发服务器代理吗?

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

Webpack 开发服务器代理路由器选项不起作用

webpack-dev-server 仅代理“localhost”请求