ich für dieses Zeug bin sehr neu, und versuchen, einige express AppExpress-App-Server. hören alle intefaces statt localhost nur
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')
});
, wenn ich starten Server zu machen:
node server.js
geht alles in Ordnung, ich siehe in der Konsole
listen:3000
und wenn ich versuche,
curl http://localhost:3000
Ich sehe 'ok'. wenn ich
telnet localhost
versuchen sehe ich
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'
aber wenn ich versuche
netstat -na | grep :3000
Ich sehe
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
die Frage ist: warum es alle Schnittstellen hören statt nur localhost? System ist Linux Mint 17 ohne Pfeifen
[Das feine Handbuch] (https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback) heißt es: _ "Wenn der Hostname angegeben wird, wird der Server akzeptiert Verbindungen auf jeder IPv6-Adresse (: :) wenn IPv6 verfügbar ist, oder eine beliebige IPv4-Adresse (0.0.0.0), andernfalls "_. – robertklep
Danke. Es ist ein weiteres Zeichen von "Explizit ist besser als implizit (c)", denke ich. – d2048
Da das Annehmen von Verbindungen von der Außenwelt eine Grundvoraussetzung für einen Server ist, scheint mir das Hören aller Schnittstellen (im Gegensatz zum Loopback) ein vernünftiger Standard zu sein :-) – robertklep