2016-02-05 13 views
5

Ich habe einen Lauf node.js Skript in einem Server befand. Was ich will, ist, dass es nicht direkt vom Browser zugegriffen wird erhalten, und ich möchte auch, dass nur bestimmte Domänen/IP-s nennen kann! Ist es möglich ?!Beschränken Sie den Zugriff auf Node.js Express mit

+0

was haben Sie versucht? – CoMartel

+0

Für soweit ich Express weiß, ist nicht in der Lage auf seine eigenen wie Nginx und Apache kann bedingte Blöcke zu tun. Also habe ich momentan keine Ideen. –

Antwort

1

Nicht sicher, wie zwischen dem Zugriff auf etwas von einem Browser zu anderer Software im Gegensatz zu unterscheiden, aber zu einigen Domänen Beschränkung des Zugangs/IPs sollte machbar sein. Die folgende (nicht Produktion) Code Zugriff auf den lokalen Host-Schleife zurück zu beschränken könnte als Ausgangspunkt dienen:

function securityCheck(req, response, next) 
{ var callerIP = req.connection.remoteAddress; 
    (callerIP == "::ffff:127.0.0.1" || callerIP == "::1") ? next() : reply404(response); 
} 

function reply404(response) 
{ response.writeHead(404, {"Content-Type": "text/html"}); 
    response.statusMessage = "Not Found"; 
    console.log("reply404: statusCode: " + response.StatusCode); 
    response.end('<span style="font-weight: bold; font-size:200%;">ERROR 404 &ndash; Not Found<\/span>'); 
} 
var app = express(); 
app.use(securityCheck); // restrict access 
... // continue with app routing 

Siehe auch detailliertere SO Antworten auf Express.js: how to get remote client address und How do I get the domain originating the request in express.js?