我试图在节点(它的内部应用程序)中代理来自安全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);
答案 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不是问题