Je suis très nouveau pour ce genre de choses et j'essaye de créer une application express
var express = require('express');
var app = express();
app.listen(3000, function(err) {
if(err){
console.log(err);
} else {
console.log("listen:3000");
}
});
//something useful
app.get('*', function(req, res) {
res.status(200).send('ok')
});
Lorsque je démarre le serveur avec la commande:
node server.js
tout va bien.
Je vois sur la console
listen:3000
et quand j'essaye
curl http://localhost:3000
OK, je vois'.
Quand j'essaye
telnet localhost
Je vois
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'
mais quand j'essaye
netstat -na | grep :3000
Je vois
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
La question est: pourquoi écoute-t-il toutes les interfaces au lieu d'uniquement localhost?
L'OS est linux mint 17 sans aucun sifflet.
Si vous utilisez, ne spécifiez pas Host lors de l'appel app.listen
, le serveur fonctionnera sur toutes les interfaces disponibles (0.0.0.0
)
Vous pouvez lier l'adresse IP à l'aide du code suivant
app.listen(3000, '127.0.0.1');
De la documentation : app.listen(port, [hostname], [backlog], [callback])
Lie et écoute les connexions sur l'hôte et le port spécifiés. Cette méthode est identique à http.Server.listen () de Node.
var express = require('express');
var app = express();
app.listen(3000, '0.0.0.0');
document: app.listen([port[, Host[, backlog]]][, callback])
exemple:
const express = require('express');
const app = express();
app.listen('9000','0.0.0.0',()=>{
console.log("server is listening on 9000 port");
})
Remarque: 0.0.0.0 doit être donné en tant qu'hôte afin d'accéder à partir de l'interface extérieure