Serveur proxy Node.js

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Serveur HTTP mandataire (proxy)
Écosystème Node.js
Modules http, request
Voir aussi Node.js

Exemple de serveur HTTP mandataire (proxy) écrit en Node.js. Le serveur relaie les requêtes vers leur destination et peut, au passage, inspecter ou réécrire le corps des réponses. Ce type de montage sert notamment à tracer ou modifier le trafic d'une application à des fins d'analyse.

Script

var http = require('http'),
    request = require('request'),
    port = 8000;

http.createServer(function (req, res) {
    console.log('Proxying url [' + req.url + ']');
    if (req.url.indexOf('http://exemple.tld/api') !== -1 && req.method === 'GET') {
        request(req.url, function (err, response, body) {
            // Décommenter pour tracer le contenu circulant dans le proxy :
            // console.log(body);
            for (var header in response.headers) {
                res.setHeader(header, response.headers[header]);
            }
            res.statusCode = response.statusCode;
            // Réécriture du corps de la réponse (exemple)
            body = body.replace(/"lives":\d+/gi, '"lives":5');
            res.write(body);
            res.end();
        });
    } else {
        req.pipe(request(req.url)).pipe(res);
    }
}).listen(port);

console.log('Proxy running on port ' + port);

Voir aussi