我正在構建舊版Android(2.3.x)的web/phonegap應用程序。除非我嘗試將任何服務器重定向添加到組合中,否則一切都會很好。這裏是場景:Android上的無限重定向循環,當從AngularJS服務器重定向時
服務器(node.js)有一個路由監聽'/'。當這條路線被擊中時,它檢查是否有會話。如果沒有會話,它會重定向到/登錄。很好,這部分工作(服務器明智,反正)。
客戶端獲得重定向時出現問題。由於Android 2.3不支持history.pushState,它會回退到hashbangs。這意味着AngularJS將URL重寫爲/#!/ login,這會導致服務器請求爲'/',這會導致服務器檢查會話並重定向到'/ login',這會導致AngularJS將URL重寫爲/#!/登錄..等等,無限期地等等。
任何想法如何從服務器與AngularJS重定向?我應該不是在我的路線中處理這個邏輯,而是嘗試在客戶端上實現它?我敢肯定,必須有一種方法來處理這個問題,但我似乎無法解決這個問題。
任何幫助將不勝感激。謝謝!!
我不知道我完全按照你的描述:如果服務器發出重定向,應該由瀏覽器接收,而不是AngularJS。但是也許你是通過xhr從服務器獲取該URL,然後分配給$ location,這將不起作用:從角度文檔:「$ location服務允許您僅更改URL;它不允許您重新加載頁面當您需要更改URL並重新加載頁面或導航到其他頁面時,請使用較低級別的API $ window.location.href。「另外,也許你需要重定向到'/ login#!/ login'? – Piran
我希望我能夠確切地說明發生了什麼,但Angular會「劫持」我的服務器重定向。服務器重定向到/ login並將角度重寫爲/#!/ login,這會導致服務器說「您沒有登錄,因此重定向到登錄」。服務器獲取路由爲/(這應該是,因爲這是Angular將其重寫爲)。 –