2016-03-16 1 views
1

J'essaie de créer un serveur proxy http-node qui définit explicitement la date transmise dans toutes les demandes. Quelqu'un peut-il s'il vous plaît me conseiller comment faire cela.Définition de la date dans une demande de nœud-proxy http

-à-dire que je veux forcer la date passée dans toutes les demandes HTTP (s) à une date dans le passé

Réglage de la date dans les req.headers ne semble pas fonctionner:

var http = require('http'), 
    httpProxy = require('http-proxy'); 

var proxy = httpProxy.createProxyServer({}); 
var server = http.createServer(function(req, res) { 

    console.log("Proxying: " + req.url); 
    req.headers["Date"] = "Fri, 18 Dec 2015 08:49:37 GMT"; 
    //req.headers["date"] = "Fri, 18 Dec 2015 08:49:37 GMT"; 
    proxy.web(req, res, { target: 'http://somewhereElse.com:9090' }); 
}); 

console.log("listening on port 8888") 
server.listen(8888); 

Répondre

1

Regardez ce link.

Donc dans votre cas:

var http = require('http'), 
    httpProxy = require('http-proxy'); 

// 
// Create a proxy server with custom application logic 
// 
var proxy = httpProxy.createProxyServer({}); 

// To modify the proxy connection before data is sent, you can listen 
// for the 'proxyReq' event. When the event is fired, you will receive 
// the following arguments: 
// (http.ClientRequest proxyReq, http.IncomingMessage req, 
// http.ServerResponse res, Object options). This mechanism is useful when 
// you need to modify the proxy request before the proxy connection 
// is made to the target. 
// 
proxy.on('proxyReq', function(proxyReq, req, res, options) { 
    proxyReq.setHeader('Date', 'Fri, 18 Dec 2015 08:49:37 GMT'); 
}); 

var server = http.createServer(function(req, res) { 
    // You can define here your custom logic to handle the request 
    // and then proxy the request. 
    proxy.web(req, res, { 
    target: 'http://127.0.0.1:9090' 
    }); 
}); 

console.log("listening on port 8888") 
server.listen(8888); 
+0

Cette solution ne fonctionne pas pour moi. Le site que je cible utilise toujours la date actuelle. Alors que si je change le système DateTime sur mon navigateur, alors le site utilise cette date. REMARQUE: Mon hôte cible n'est pas 127.0.0.1 comme dans l'exemple de code ci-dessus mais une URL sur un hôte distinct. Par conséquent, je suppose qu'il doit obtenir la date de la demande HTTP en quelque sorte. –

+0

J'ai trouvé mon problème: 1) Les informations de date étaient transmises dans un paramètre GET spécifique à l'application et non via un en-tête Date: 2) Les en-têtes "Date:" font partie de la réponse HTTP et non HTTP Demande comme j'avais initialement pensé. –