Angular on Node JS Web服务 - GET http://127.0.0.1 net :: ERR_CONNECTION_REFUSED

时间:2017-05-12 02:43:22

标签: javascript angularjs node.js express cors

我正在使用AngularJS开发网站并在NodeJS(Express JS)Web服务中托管它。 AngularJS使用NodeJS服务的某些端点上的数据。换句话说,NodeJS具有为AngularJS网页提供服务并提供所需数据的端点。

在我的虚拟机(Web服务)上托管网页之前,我使用我的主机来托管它。然后网页尝试将数据请求到我的虚拟机的端点,它工作正常。

但是,当我在我的虚拟机(Web服务)上托管它并更改为在我的localhost(http://127.0.0.1:3000/data)上请求数据时,我现在收到GET http://127.0.0.1:3000/data net::ERR_CONNECTION_REFUSED错误。

我尝试了什么

首先,我认为这是因为跨域资源共享而发生的,所以我通过添加这些代码行(取自this site)在我的NodeJS中启用它:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

然而,它仍然没有任何帮助。我仍然收到相同的错误消息。

后来,我认为可能是我的防火墙阻止了访问。然后我关闭了我的防火墙,它仍然无法解决我的问题。

我相信这是因为我的网页试图访问其localhost API上的端点,这应该在我第一次尝试时通过CORS处理来克服。

如果不是CORS,究竟是什么造成了这种情况?我该如何克服这个问题?任何帮助将不胜感激。

更新:节点JS路线代码

var express = require('express');
var app =express();
app.use(express.static(path.join(__dirname, 'public')));

app.get('/admin/login/:user/:pass', function(appReq,appRes){
    appRes.status(200).send('1');
    appRes.end();
});

app.get('/*', function(appReq, appRes){
    fs.readFile('./public/index.html', function(err,data){
        if (err) {
            appRes.writeHead(500);
            appRes.end('Error loading html');
        }
        else {
            appRes.writeHead(200);
            appRes.end(data);
        }
    });
});

app.listen(port, function(){
    console.log('express app listening at http://'+hostname+":"+port+'/');
});

这是我的AngularJS GitHub repo

1 个答案:

答案 0 :(得分:1)

原来使用localhost IP是错误的。这可能是由于JavaScript被发送到客户端,然后浏览器解释localhost是客户端的localhost。因此,将localhost更改为我的实际IP地址解决了我的问题。