代理来自安全应用程序的请求

时间:2015-04-04 15:56:17

标签: node.js

我试图在节点(它的内部应用程序)中代理来自安全Web应用程序(https)的请求,我不太确定如何做... 以下是我的代码,当我从非安全的应用程序(http)尝试它时,它可以工作。

它只是剥离了一个页面名称并在另一个应用程序中使用它。我阅读了文档,但仍然不知道该怎么做。我需要从我的应用程序中获取ssl信息吗?

var http = require('http');
var httpProxy = require('http-proxy');
var request = require('request');
var app = require('express.io')();
app.http().io();

// 
// Create proxy server 
// 
var proxy = httpProxy.createProxyServer({target:'http://localhost:9000'}).listen(9085);

// Send the client html.
app.get('/', function(req, res) {

  res.sendfile(__dirname + '/client1.html');
})

proxy.on('error', function (err, req, res) {
  res.writeHead(500, {
    'Content-Type': 'text/plain'
  });
  res.end('Something went wrong!');
});

app.all('/Domain/*', function(req, res) {

  console.log(req.url);

   if (req.url.indexOf("Page.do") > -1) {

    // URL to Atlas
    var otherAppURL = "http://myotherapp/pages/";

    var temp = req.url.split("Page.do")[0].split("/");
    var pageName = temp[temp.length - 1];;

    app.io.broadcast('update', {
       url: atlasURL + pageName + '.html'
    }); 

   };


  // This doesnt work
  //var url = "https://mysecureapp:9044" + req.url;

  // This works
  var url = "http://localhost:9080" + req.url;   
  req.pipe(request(url)).pipe(res);

})

app.listen(9000);

2 个答案:

答案 0 :(得分:0)

是的,您确实需要SSL证书才能进行HTTPS连接。根据网站https://www.globalsign.com/en/ssl-information-center/what-is-an-ssl-certificate/

  

标准HTTP更改为HTTPS,自动告诉浏览器必须使用SSL保护服务器和浏览器之间的连接。

这意味着使用HTTPS连接时,您需要使用SSL保护服务器。 要在Node中使用HTTPS连接,此网站可能会帮助您: http://gaboesquivel.com/blog/2014/nodejs-https-and-ssl-certificate-for-development/

答案 1 :(得分:0)

好的我可能会误会,但这条线没有意义,

req.pipe(request(url)).pipe(res);

到路由处理程序命中时, req 对象就绪 所以req.pipe没有任何意义。 请检查 url 是否返回有效的回复

request(url).pipe(res);应该有效

http / https不是问题