2013-01-14 158 views
1

我試圖實現與ExpressJS」的Cookie會話和AngularJS認證。問題是,即使我可以讓ExpressJS發送會話cookie,Angular也不會隨後發送請求。

我在192.168.1.2:3000運行的後端服務器,並在192.168.1.2:3501自耕農服務器,因此有一個跨域的問題嗎?我已經使用ExpressJS完成了正常的CORS工作,以便使$ http能夠正常工作,但我不確定如何使cookie正常工作。

+0

檢查端口號是否包含在Cookie的域部分。我認爲,在這種情況下,您將無法讀取另一臺服務器上創建的cookie。就我所知,CORS僅用於Javascript,但我可能在那裏是錯誤的。但爲什麼你需要在同一臺機器上運行兩個Web服務器?我的意思是,當你擁有真正的後端時,Yeoman服務器是什麼? –

+0

我現在只是將所有東西引導到一起。將來後端將運行在不同的子域下,因此問題應該以.foo.com作爲cookie中的域來解決。有趣的是,似乎該端口不應該是一個問題,當涉及到餅乾,但肯定看起來像它。我使用Firefox 18和最新的Chromium進行了測試。 – jimmy

回答

0

獲得在angularJS工作餅乾,你可以follow this link

我保持會話變量在後端(expressJS),並返回到$餅乾在前端(angularJS)對象。

所以,當我退出,它會刪除angularJS Cookie,並在後端會話變量。

1

你檢查你的請求與withCredentials標誌設置爲true發送?

在角度,這可以通過在HTTP請求配置對象進行,例如

//... 
$http.get(myUrl, {withCredentials: true}) 
//... 

或者,如果你不想重新配置這一切的時候,使用$httpProvider

myApp.config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.defaults.withCredentials = true; 
}]);