我正在使用 AngularJS 开发网站,并将其托管在 NodeJS (Express JS) Web 服务中。 AngularJS 使用 NodeJS 提供的某些端点上的数据。换句话说,NodeJS 具有为 AngularJS 网页提供服务并提供所需数据的端点。
在我的虚拟机(Web 服务)上托管网页之前,我使用我的主机来托管它。然后,该网页尝试向我的虚拟机端点请求数据,并且工作正常。
但是,当我将其托管在虚拟机(Web 服务)上并更改为在本地主机 ( 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();
});
但是,这仍然没有任何帮助。我仍然收到相同的错误消息。
后来我想可能是我的防火墙阻止了访问。然后我关闭了防火墙,但它仍然无法解决我的问题。
我相信发生这种情况是因为我的网页尝试访问其本地主机 API 上的端点,这应该在我第一次尝试时通过 CORS 处理来克服。
如果不是 CORS,那么到底是什么原因导致的?我该如何克服这个问题?任何帮助将不胜感激。
更新:Node 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
最佳答案
事实证明使用本地主机IP是错误的。这可能是由于 JavaScript 被发送到客户端,然后浏览器将 localhost 解释为客户端的 localhost。因此,将 localhost 更改为我的实际 IP 地址解决了我的问题。
关于javascript - Node JS Web 服务上的 Angular - GET http://127.0.0.1 net::ERR_CONNECTION_REFUSED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43928470/