我设置了以下节点代理服务器,以从一个Web应用程序发出的请求中去除页面名称,并使用它在第二个Web应用程序中显示页面信息。 它工作正常但是对于截获的每个请求,都会打开一个新的浏览器。 反正有没有检测到Internet Explorer浏览器是否打开,以便我可以使用它?
var http = require('http'),
httpProxy = require('http-proxy'),
request = require('request'),
open = require('open');
//
// Create proxy server
//
httpProxy.createProxyServer({target:'http://localhost:9000'}).listen(9085);
//
// Create target server
//
http.createServer(function (req, res) {
if (req.method=='GET') {
if (req.url.indexOf("Page.do") > -1) {
var temp = req.url.split("Page.do")[0].split("/");
var pageName = temp[temp.length - 1];
var docURL = "http://localhost:9081/mysecondwebapp/pages/" + pageName + ".html";
open(docURL, "iexplore");
};
};
}).listen(9000);
答案 0 :(得分:0)
以下是我在评论中谈到的iframe
+ socket.io
解决方案。我使用express.io
module因为我比original socket.io
module更熟悉它。
这是服务器端代码:
app = require('express.io')();
app.http().io();
var base = 'http://www.w3schools.com/tags/tag_';
// Send the client html.
app.get('/', function(req, res) {
res.sendfile(__dirname + '/client.html');
})
app.post('/:tag', function(req, res) {
// Send new url to the all active clients
app.io.broadcast('update', {
url: base + req.params.tag + '.asp'
});
// End original request
res.send(200);
})
app.listen(9000);
和client.html
与iframe
和简单的JS代码段:
<!DOCTYPE html>
<html>
<head>
<script src="/socket.io/socket.io.js"></script>
<style type="text/css">
body iframe {
overflow: hidden;
overflow-x: hidden;
overflow-y: hidden;
position: absolute;
height: 100%;
width: 100%;
margin: 0;
padding: 0;
top: 0;
left: 0;
right: 0;
bottom: 0
}
</style>
</head>
<body>
<iframe id="frame" frameborder="0" height="100%" width="100%"></iframe>
<script>
io = io.connect();
frame = document.getElementById('frame');
io.on('update', function(data) {
frame.src = data.url;
});
</script>
</body>
</html>
以下是它的工作原理:
node.js
服务器,然后在浏览器中导航至localhost:9000
。curl
或任何其他http实用程序向localhost:9000/iframe
发送POST请求。w3schools
page for iframe
tag。我希望这个简单的例子可以帮助你。
以下是我用来编写它的所有链接: