Restrict access to Node.js using Express
Not sure how to distinguishing between accessing something from a browser as opposed to other software, but restricting access to some domains/IPs should be doable. The following (non production) code to restrict access to the localhost loop back might serve as a starting point:
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 – Not Found<\/span>');}var app = express();app.use(securityCheck); // restrict access... // continue with app routing
See also more detailed SO answers to Express.js: how to get remote client address and How do I get the domain originating the request in express.js?