0

我的代码如下:

    var http = require('http');
    var static = require('node-static');
    var file = new static.Server();

    http.createServer(function (req, res) {
            file.serve(req, res);
    }).listen(1337, '127.0.0.1');

当 url 是 localhost:1337/1.html 它工作正常。但是,如果我将其更改为主机名:1337/ 其中“主机名”是我的服务器的主机名,我将无法建立连接错误。在 PHP 中,我可以轻松地将 127.0.0.1 或 localhost 替换为主机名。为什么在 node.js 中不可能相同?

4

1 回答 1

3

所以问题是当您的浏览器解析“主机名”时,DNS 会为它提供您的本地网络 IP 地址,例如 192.168.0.42,但您的代码告诉节点监听一个且只有一个 IP 地址:127.0.0.1,因此连接不会工作。将节点代码中的“127.0.0.1”替换为“0.0.0.0”(意思是“所有 IP 地址”),一切正常。请注意,您本地网络上的其他计算机(如咖啡店 wifi 网络中的其他人)将能够连接到您的应用程序,这就是为什么要坚持使用环回 IP 地址(127.0.0.1)和“本地主机”的开发更好的选择。

于 2013-09-10T07:09:46.853 回答