2015-08-03 49 views
0

我最近將Web應用程序從JSF 1.2升級到JSF 2.2以及RF 3.3.3升級到RF 4.5.7。加載第一個login.html頁面時,我目前遇到控制檯錯誤。這隻發生在頁面首次加載或刷新時(F5或Shift F5)。當我登錄並註銷時,我不會收到這些錯誤!該URL完全相同,例如host:port/xxx/login.html升級到JSF 2.2和RF後刷新登錄頁面時出現控制檯錯誤4.5.7

此問題僅發生在此頁面上。我使用Spring(3.1.0)進行登錄,但不確定問題是否相關。在applicationContext.xml中安全配置是:

<sec:http auto-config='true' pattern="/login.html*" security="none"/> 
    <sec:http pattern="/a4j/**" security="none"/> 
    <sec:http pattern="/css/**" security="none"/> 
    <sec:http pattern="/img/**" security="none"/> 
    <sec:http realm="Name goes here"> 
    <sec:form-login login-processing-url="/j_spring_security_check" 
        login-page="/login.html" 
        authentication-failure-url="/login.html?fail" 
        default-target-url="/main.html" 
        always-use-default-target="true"/> 
    <sec:logout logout-url="/logout.html"/> 
    <sec:intercept-url pattern="/**" access="ROLE_USER"/> 
</sec:http> 

和login.xhtml:

<form id="frm-login" action="j_spring_security_check" method="post"> <label class="above">Username<h:inputText id="j_username" /></label> <rich:jQuery selector="#j_username" query="focus()"/><br/> <label class="above">Password<h:inputSecret id="j_password" /></label><br/> <h:commandButton id="submit" name="submit" type="submit" value="Login"> </h:commandButton> </form>

升級之前,這是罰款。使用Firebug我已經比較了我看到控制檯錯誤的時間和我不知道的時間之間生成的HTML。

Generated HTML when throwing console errors

Console errors

Generated HTML when working fine

我相信我已經應用了所有必要的更新,例如刪除舊的jar文件(包括去除多餘的Facelets 1.1.14,視圖處理程序引用),更新RF代碼,XHTML頁面代碼和命名空間以及web.xml和faces-config.xml更新。

我知道的一件事是,當我註釋掉以下配置時,我不會收到錯誤。所以不知何故,這會干擾此頁面上的資源加載。

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
</filter-mapping> 

任何想法如何解決這個問題?如果我錯過了幫助解決此問題所需的一些重要信息,請事先道歉。

更新1:

enter image description here

enter image description here

更新2:加載頁面使用谷歌瀏覽器的網絡選項卡時採取 圖片

enter image description here enter image description here

enter image description here

+0

所以web瀏覽器獲得一個XML(或者只是HTML與XML不恰當的序言)文件,而不是JS文件時,它會嘗試下載這些個別JS文件?至少,這就是那些控制檯錯誤所暗示的。現在請回到「網絡」選項卡並檢查HTTP響應。它看起來怎樣?它是登錄頁面嗎?或者它是一些自定義錯誤頁面? – BalusC

+0

嗨BallasC,感謝您的回覆。我用網絡結果更新了我的帖子。如果有任何其他信息可以告訴我。或其他任何嘗試。感謝幫助。 – user1746582

+0

響應主體包含什麼內容?無論如何,它們與登錄頁面本身具有相同的文件大小,因此只有當瀏覽器請求這些腳本和樣式資源時才確認服務器實際返回了登錄頁面。這反過來表明Spring Security過於嚴格地配置它也阻止對這些資源的訪問。 – BalusC

回答

0

好吧,我發現它(從BallusC一些有用的指針)。升級後,我不得不更新applicationContext.xml中的安全配置如下:

<sec:http auto-config='true' pattern="/login.html*" security="none"/> 
    <sec:http pattern="/a4j/**" security="none"/> 
    <sec:http pattern="/css/**" security="none"/> 
    <sec:http pattern="/img/**" security="none"/> 
    <sec:http realm="name goes here"> 
    <sec:form-login login-processing-url="/j_spring_security_check" 
        login-page="/login.html" 
        authentication-failure-url="/login.html?fail" 
        default-target-url="/main.html" 
        always-use-default-target="true"/> 
    <sec:logout logout-url="/logout.html"/> 
    <sec:intercept-url pattern="/login.html*" access="ROLE_USER"/> 
    <sec:intercept-url pattern="/a4j/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
    <sec:intercept-url pattern="/css/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
    <sec:intercept-url pattern="/img/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
</sec:http> 

我的問題上面具有的applicationContext以下項的根本原因。XML:

​​