【问题标题】:Can't access 127.0.0.1 or any other ip, localhost works无法访问 127.0.0.1 或任何其他 ip,localhost 有效
【发布时间】:2017-06-30 12:58:17
【问题描述】:

我正在使用 Nodejs 和 Expressjs。

当我尝试通过http://www.localhost:3000/ 访问我的应用程序时,应用程序加载正常。但如果我尝试任何其他环回 IP(127.0.0.1/我的 PC 名称/我的 PC IP),我会得到:

请求地址:http://127.0.0.1:3000/ 请求方法:GET 状态码:301 永久移动

然后:

GET http://www.127.0.0.1:3000/net::ERR_NAME_NOT_RESOLVED

我使用的是 Windows 7。

经过大量网络搜索后我尝试了什么:

  1. 编辑hosts文件,添加:

    127.0.0.1 本地主机

    ::1 本地主机

  2. 禁用 windows 防火墙

  3. 明确告诉 express 监听所有 IP:(带或不带 '0.0.0.0')

    app.listen(3000, "0.0.0.0", function() {
      console.log("listen on 3000"); 
    });
    
  4. 不同的端口(8080、8081等)

  5. http:// 不带任何其他变体。

此外,如果我为它的实例运行 Wamp 服务器(例如访问 phpmyadmin),一切都很好。 (本地主机、127.0.0.1 等通过 80 端口)

【问题讨论】:

  • 为什么 www 在 127.0.0.1 前面?你不需要它
  • www 绝对是错误的尝试http://127.0.0.1:3000,它可以在没有空格的情况下工作。 if not 检查是否允许跨站点请求
  • chrome 可能会自动添加,我尝试访问 http://127.0.0.1:3000
  • @mtizziani 当然没有空格。我运行 chrome 并获得了跨域权限(否则 localhost 也无法正常工作)
  • 我已经编辑了我的问题并纠正了我得到的流程,找到了问题,tnx!

标签: javascript node.js express windows-7


【解决方案1】:

尝试用 0.0.0.0 替换 localhost

【讨论】:

    【解决方案2】:

    从IP地址中删除www,它应该可以工作。

    【讨论】:

    • 我已经编辑了我的问题,chrome 自动添加了 www(可能是因为它可以在没有它的情况下访问)但我试图在没有它的情况下访问。
    【解决方案3】:

    问题是我使用以下几行添加了从无 www 到 www 的重定向:

    // non-www to www redirect
    app.get('/*', function (req, res, next) {
        if (req.headers.host.match(/^www/) === null) {
            res.redirect(301, 'http://www.' + req.headers.host + req.url);
        } else {
            next();
        }
    });
    

    它也影响了 127.0.0.1,将其删除以进行开发修复了问题。

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 2021-12-31
      • 2014-01-24
      • 2022-11-01
      相关资源
      最近更新 更多