2016-08-05 43 views
0

我正在使用Require JS和Orace JET處理HTML/JS請求到服務器時的302狀態代碼?

當會話超時時,我們如何處理302狀態碼或服務器返回的任何其他狀態碼。

它可以被配置爲捕獲它並在這種情況下將用戶重定向到登錄頁面?

+0

* 302或任何其他* - 我會處理錯誤代碼,因爲它們應該被處理,這取決於錯誤代碼 - 你想要代碼爲每個可能的代碼?包括700年代?因爲那是720 –

+0

我通過狀態碼知道,但我們可以在哪裏處理這個問題。我厭倦了需要JS的onError,但似乎並不奏效。 –

回答

1

RequireJS無法看到狀態碼302。這就是瀏覽器的工作方式:瀏覽器將會看到302並自動執行下一個HTTP請求。 RequireJS不會知道有重定向。

任何錯誤(500,400等)的HTTP狀態代碼都將導致模塊加載失敗並調用onError

+0

我有沒有辦法解決這個問題。主要的問題是,我們有一個基於FORM的身份驗證和登錄以及註銷工作正常。 當會話超時並且我們請求JavaScript/HTML資源時,問題就會出現,容器將返回「302」狀態,並在現有頁面頂部顯示登錄頁面。 1. \t URL路徑不會更改爲登錄URL 2. \t重新登錄後,會返回先前請求的JavaScript,但源代碼將打印在瀏覽器中,而不是重定向到歡迎頁面。 這怎麼處理? –

1

這是我的解決方案(因爲運氣有效)。以此爲靈感。當我的應用程序中的會話過期時,請求正在按照您的預期使用302轉發到登錄頁面。有兩種主要類型的請求,其中可能發生的:

  • REST API調用(通過XMLHttpRequest)
  • 導航頁面上的用戶做了

#2,302不成問題。用戶只需重定向到登錄頁面。

對於#1,我可以以某種方式檢測它(有一些概率),因爲登錄頁面位於不支持CORS的不同域中。 XMLHttpRequest請求只會失敗,readyState等於0,statusText等於「error」(因爲瀏覽器會阻止XMLHttpRequest到不同的域)。我在所有REST API調用中都有一個「監聽器」(攔截器),並且每當有一個失敗時出現0 readyState和「error」statusText,就表示會話可能已過期。

這不是一個解決方案,當然不能隨處使用。只是一個想法:)

相關問題