2014-01-06 44 views
2

我正在執行以下$ save,它調用我的angularJS $資源並POST到我的API。我可以調試到我的成功回調處理程序,該對象實際上是在我的API中創建的。

myObj.$save({}, function (value, responseHeaders) { 
    myObj.someSuccessFunction(); 
}, function (responseText) { 
    myObj.someFailureFunction(); 
}); 

我無法從「responseHeaders」參數中檢索任何東西。 「responseHeaders()」返回一個空對象。我想拉這樣的「位置」響應頭:responseHeaders(「Location」)。

值得注意的是,在chrome中進行調試時,響應被填充。出於某種原因,「responseHeaders」對象無法填充。

我們如何獲得這些responseHeaders?

謝謝!

+0

不是$ save()參數對象的_first_參數,而是_second_回調?這會使你傳遞的函數被評估爲它預期返回的(參數)對象。試試'myObj。$ save({},function ....)' – towr

+0

謝謝@towr,這是正確的。我更新了這個問題來反映這一點。無論如何仍然看到相同的問題。 – mtical

回答

2

它可能是一個CORS問題?如果您通過域名撥打電話,請確保在預購OPTIONS呼叫中包含cors.exposed.headers。

1

如果它是一個跨域調用必須添加下面的頭在你的響應頭:

Access-Control-Expose-Headers: Location 

這樣,瀏覽器能夠暴露你的海關標頭的閱讀角。

0

我有與彈簧安全4.2 CORS過濾器和AngularJS相同的問題。我使用Angular JS構建的客戶端應用程序無法從Spring Rest api發送的響應頭中讀取客戶身份驗證令牌。

我可以通過公開以下標題來解決問題。

config.addExposedHeader("Origin"); 
config.addExposedHeader("X-Requested-With"); 
config.addExposedHeader("X-AUTH-TOKEN"); 
config.addExposedHeader("Content-Type"); 
config.addExposedHeader("Accept"); 
config.addExposedHeader("Authorization"); 
config.addExposedHeader("Location"); 

經過上述修復。我的Angular代碼能夠讀取標題。