2015-10-14 55 views
0

我的情況:GWT:JS錯誤,同時重定向到SSO身份驗證頁面

  • 與主頁的GWT應用程序Application.html
  • SSO認證與重定向到外部認證頁面,如果用戶的過濾器沒有連接(在會話令牌)
  • 緩存配置是這樣的:

    <head> 
        ... 
        <meta http-equiv="Pragma" content="no-cache"/> 
        <meta http-equiv="Cache-Control" content="no-store"/> 
        <meta http-equiv="Expires" content="-1"/> 
        ... 
    </head> 
    

我的問題:

  • 如果緩存被關閉我的瀏覽器(Firefox),我的應用程序的主頁正確重定向外部認證頁面上:它工作正常
  • 如果緩存被開啓,瀏覽器嘗試爲了獲得GWT myApp.nocache.js,該GET請求的響應是302 : Redirect,但由於javascript錯誤SyntaxError: expected expression, got '<',重定向失敗(顯示白色空白頁面)。該腳本myApp.nocache.js在外部頁面(我的SSO認證頁面)上執行和失敗

我不明白爲什麼它的工作原理,當瀏覽器緩存被關閉,我無法迴避的JavaScript執行時,導航器緩存已啓用。

有人可以幫助我嗎?

回答

0

嗯,我解決我的問題蒙山一個骯髒的解決方案:

在我的過濾器,檢查認證,如果我有重定向到我的外部登錄頁面,我做一個JavaScript重定向如果所請求的資源的javascript:

public void redirigeVersPortail(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, String uriPortail) throws IOException { 
    if ((httpServletRequest != null) && (httpServletRequest.getRequestURI().contains(".js"))) { 
     httpServletResponse.setContentType("application/javascript"); 
     httpServletResponse.getWriter().println("window.location = \"" + uriPortail + "\";"); 
    } else { 
     httpServletResponse.sendRedirect(uriPortail); 
    } 
} 

這對我很有用,但如果您有更好的方法在任何情況下都能正確進行重定向,我會接受它。

本帖子中列出了其他解決方案:Detect if GWT *.nocache.js file loaded properly

相關問題