0

这是我的情况,

我正在公司防火墙后面创建一个反应应用程序。我的 api 服务器在不同的位置远程运行。如何在 package.json 中设置我的代理,以便我可以通过 corp 代理访问 api 服务器?

到目前为止,我尝试过的配置是这样的:

"proxy" : { 
     "/api/" : {
          "target" : "http://****myapiserver.com",
          "changeOrigin" : true,
          "agent" : {
              "host" : "pathtoproxy.com",
              "port" : 80
           }
      }
 }

我尝试了其他几种组合也没有任何运气。我有什么遗漏或错误吗?

此外,我的 npm 已配置,因此它具有 http 和 https 代理设置。

4

1 回答 1

0

好的,所以我通过编写自定义代理解决了这个问题 - 所以现在我有 3 个代理。

  1. React 代理 - 当浏览器调用 api 时将被命中。
  2. 我的自定义代理将请求从 React 应用程序的代理“传输”到 corp 代理。
  3. CORP 代理,它允许我访问我想要访问的 api 服务器。

    // React App's package.json  - runs on port 3000
    "proxy" : "http://localhost:3001"
    
    // myproxy.js - runs on port 3001
    var express = require('express')
    var request = require('request')
    
    const app = express();
    var serverRequest = request.defaults({'proxy':'http://path2.corp.proxy.com:port'})
    
    app.all('/', (req, res) => {
              let url = "http://myserver.com/api" + req.url
              req.pipe(serverRequest(url)).pipe(resp)
           );
    
    app.listen(3001);
    

一旦我有了这个,我启动我的自定义代理node proxy.js 然后我启动我的反应应用程序并且一切正常,我可以访问 api 服务器。

于 2018-07-20T01:03:54.490 回答