2017-05-12 53 views
0

我正在開發使用AngularJS的網站並將其託管在NodeJS(Express JS)Web服務中。 AngularJS使用由NodeJS服務的一些端點上的數據。換句話說,NodeJS具有服務AngularJS網頁並提供所需數據的端點。Angular在節點上的JS Web服務 - GET http://127.0.0.1 net :: ERR_CONNECTION_REFUSED

在我的虛擬機(網絡服務)上託管網頁之前,我使用主機託管它。該網頁然後試圖將數據請求到我的虛擬機的端點,它工作正常。但是,當我將其託管在我的虛擬機(Web服務)上並更改爲在本地主機上請求數據時(http://127.0.0.1:3000/data),我現在得到的錯誤是GET http://127.0.0.1:3000/data net::ERR_CONNECTION_REFUSED

我已經試過

首先,我認爲這是因爲跨源資源共享的發生,所以我能夠在我的NodeJS通過添加幾行代碼(從this site拍攝):

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,究竟是什麼原因造成了這種情況?我如何解決這個問題?任何幫助,將不勝感激。

更新:節點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

+0

您能否通過GitHub或其他類似程序分享代碼,我們可以在這裏查看它。上面提到的代碼不足以分析您嘗試提供的服務以及您嘗試提供服務的方式。 – Jeet

+0

@Jeet當然,我會上傳我的角度github,並會更新我的節點js路由代碼,因爲我的節點js文件是巨大的。 –

+0

如果您想確認問題是由於在您的瀏覽器中核心安裝此擴展程序而發生的,請https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=zh-CN所以這將允許Cors和第二件事情,如果你想服務你的角度項目表達,你需要首先使它像「ng build --production」一樣構建。你將得到「dist」文件夾。將該文件夾放入快速公共文件中或將這些文件作爲靜態資源。 如果你分享你的服務器文件,它會幫助我向你展示確切的解決方案。 – Adiii

回答

1

原來使用本地主機的IP是錯誤的。這可能是由於JavaScript被髮送到客戶端,瀏覽器然後解釋localhost是客戶端的本地主機。因此,將localhost更改爲我的實際IP地址解決了我的問題。

+0

好,這就是爲什麼我告訴你看看ip – Adiii