Le routage des requêtes http à travers Node.js

Je suis en train de faire un concombre configuration de test avec Node.js qui peut tester n'importe quel site web en utilisant un iframe.
Normalement, l'iframe est un pas aller à cause de la croix de script limites de sécurité.
Toutefois, si c'était possible (je suis sûr que c'est. Et je vous fais confiance pour trouver une solution)
pour aller chercher le site web cible pour le test via l'url demandée lorsqu'un nom d'url est demandée, de sorte que l'iframe serait chargé avec une copie de la cible de test.
Fondamentalement juste un standard node.js serveur qui récupère les pages spécifiques basés sur la req.url
Semblable à une Requête d'Adresse de Routeur.

Voici ma tentative flagrante de faire exactement cela.
L'extraction de la page de test via. l'url fonctionne.
Mais je vais avoir un problème de commutation à partir du serveur http à l'objet de connexion.
Est-il un moyen de "nourrir" la connexion avec le serveur http de la réponse?

PS. j'ai également créé une solution avec deux node.js les serveurs.
Le nœud 1 extrait la cible de test et de le mélanger avec le concombre page de test.
Le nœud 2 de l'hébergement le concombre de test.
Cette solution fonctionne. Mais il crée des problèmes sur les sites web où javascript conflits se produisent. C'est pourquoi la solution iframe, qui permet de résoudre ce problème par l'encapsulation est plus attrayante.

var http  = require('http');
var connect    = require('connect');
var port  = process.env.PORT || 8788;
var server = http.createServer(function(req, webres)
{
var url = req.url;
console.log(url);
if(url == '/myWebsiteToBeTestedWithCucumberJS')
{
//Load the web site to be tested "myWebsiteToBeTestedWithCucumberJS"
//And update the references
//Finaly write the page with the webres
//The page will appear to be hosted locally
console.log('Loading myWebsiteToBeTestedWithCucumberJS');
webres.writeHead(200, {'content-type': 'text/html, level=1'});
var options =
{  
host: 'www.myWebsiteToBeTestedWithCucumberJS.com,   
port: 80,   
path: '/'
};
var page = '';
var req = http.get(options, function(res)
{
console.log("Got response: " + res.statusCode);   
res.on('data', function(chunk)
{
page = page + chunk;
});   
res.on('end', function()
{
//Change relative paths to absolute (actual web location where images, javascript and stylesheets is placed)
page = page.replace(/href="\/\//g       , ' href="/');
page = page.replace(/src="\//g          , ' src="www.myWebsiteToBeTestedWithCucumberJS.com');
page = page.replace(/data-src="\//g     , ' data-src="www.myWebsiteToBeTestedWithCucumberJS.com');
page = page.replace(/href="\//g         , ' href="www.myWebsiteToBeTestedWithCucumberJS.com');
webres.write(page);
webres.end('');
});
});
}
else
{
//Load any file from localhost:8788
//This is where the cucumber.js project files are hosted
var dirserver     = connect.createServer();
var browserify = require('browserify');
var cukeBundle = browserify({
mount: '/cucumber.js',
require: ['cucumber-html', './lib/cucumber', 'gherkin/lib/gherkin/lexer/en'],
ignore: ['./cucumber/cli', 'connect']
});
dirserver.use(connect.static(__dirname));
dirserver.use(cukeBundle);
dirserver.listen(port);
}
}).on('error', function(e)
{  
console.log("Got error: " + e.message);   
});
server.listen(port);
console.log('Accepting connections on port ' + port + '...');

OriginalL'auteur DevNull | 2012-08-01