2017-03-28 20 views
1

自從我從切換到數據庫URL 在內存中的Web-API URL,角應用程序的JavaScript控制檯,給了我一個404錯誤當從不同的本地主機端口 - CORS問題使用GET API時,localhost上的角度獲取404?

JavaScript console output 404 error

  • 我有我使用本地主機精簡版的服務器上運行的應用程序的角度:3035/

  • 我有一個MongoDB的/的NodeJS /快遞在本地主機上運行的數據庫:3039/

  • 我的角度應用是 「GET」 -ing就好使用內存的Web-API URL 'API/loggerData'

有什麼想法?它是CORS嗎?還有別的嗎?我是否還需要在棱角邊配置lite-server?

這裏是我的角度代碼:

private loggerUrl = 'localhost:3039/read/getall/'; 
getLoggerData(): Promise <Dataset[]> { 
    return this.http.get(this.loggerUrl) 
     .toPromise() 
     .then(response => response.json().data as Dataset[]) 
     .catch(this.handleError); 
} 

此外,我已經試過落實在數據庫方面的一些CORS解決方案這並沒有影響任何東西 -

這裏的一些的數據庫代碼我修改:

var app = express(); 

app.use(function (req, res, next) { 

//Website you wish to allow to connect 
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3035'); 

// Request methods you wish to allow 
res.setHeader('Access-Control-Allow-Methods', 
'GET, POST, OPTIONS, PUT, PATCH, DELETE'); 

// Request headers you wish to allow 
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); 

// Set to true if you need the website to include cookies in the requests sent 
// to the API (e.g. in case you use sessions) 
res.setHeader('Access-Control-Allow-Credentials', true); 

// Pass to next layer of middleware 
next(); 
}); 
+1

它應該是'私人loggerUrl =的 'http://本地主機:3039 /讀/ GETALL /';' – echonax

+0

如果@echonax解決方案不工作,那麼我敢打賭它的一個CORS問題。你將不得不配置你的數據庫服務器來接受CORS請求。 – victor

+0

@echonax - 謝謝你的建議 - 我已經試過了,你看到的是我嘗試輸入網址的很多方法之一,但它很好地知道包括'http://'是正確的方法。事實證明,AJT_82的答案解決了它 - 這是我在研究這個問題時還沒有看到任何人談論的內存中web-api的問題。再次感謝 – Jake

回答

3

No collection錯誤通常意味着,你已經離開掛的一些等價的:

InMemoryWebApiModule.forRoot(InMemoryDataService) 

在ngModule,當你試圖讓「真正的」 HTTP的請求發生干擾。所以從你的ngModule中移除,你應該很好去! :)

這之後,您可能仍然會碰到與CORS的問題,但是這應該可以解決你:)

並經echonax提到的,你應該使用完整的URL的電流誤差,與包括HTTP:

private loggerUrl = 'http://localhost:3039/read/getall/' 
+0

刪除內存中的web-api從app.module文件中導入解決了404錯誤 - 我查了上下堆棧並hadn沒有看到這是一個決議 - 感謝您的幫助! – Jake

+0

非常歡迎您!很高興我能幫上忙! :) – Alex

相關問題