jestem bardzo nowy w tym rzeczy, i stara się dokonać pewnych Express APPekspresowa aplikacja serwera. słuchać wszystkie intefaces zamiast localhost tylko
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')
});
kiedy wychodząc serwer przez:
node server.js
wszystko idzie w porządku, zobaczyć w konsoli
listen:3000
i gdy próbuję
curl http://localhost:3000
Widzę "ok". gdy próbuję
telnet localhost
widzę
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'
ale gdy próbuję
netstat -na | grep :3000
widzę
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
pytanie brzmi: dlaczego słuchać wszystkich interfejsów zamiast tylko localhost? System jest Linux Mint 17 bez gwizdów
[Grzywna manualny] (https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback) stwierdza: _ "Jeśli nazwa hosta zostanie pominięty, serwer będzie akceptować połączenia na dowolny adres IPv6 (: :) gdy IPv6 jest dostępny, lub dowolny adres IPv4 (0.0.0.0) w przeciwnym razie "_. – robertklep
Dzięki. jest to kolejny znak "Jawny jest lepszy niż niejawny (c)", jak sądzę. – d2048
Biorąc pod uwagę, że akceptowanie połączeń ze światem zewnętrznym jest podstawową przesłanką dla serwera, słuchanie wszystkich interfejsów (w przeciwieństwie do sprzężenia zwrotnego) wydaje się być rozsądną domyślną dla mnie :-) – robertklep