公司代理后面的create-react-app代理api请求

时间:2018-07-18 18:05:15

标签: node.js reactjs npm create-react-app react-scripts

这是我的情况,

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

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

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

我也尝试了其他几种组合,但都没有运气。我有什么想念的吗?

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

1 个答案:

答案 0 :(得分:0)

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

  1. 反应代理-浏览器调用api时将被点击。
  2. 我的自定义代理将请求从React应用的代理“传递”到公司代理。
  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的身份启动我的自定义代理 然后我启动我的react应用,一切正常,我可以访问api服务器。