3

瀏覽器如何實現Application Cache清單文件的請求並且與請求其他文件的方式不同?使用Windows/NTLM身份驗證的應用程序高速緩存清單文件錯誤

我問,因爲我看到的行爲我不會指望在IIS 7中使用Windows/NTLM身份驗證。情況是,我有一個網站與清單文件定義。使用匿名身份驗證,一切都按預期工作 - 站點加載並可脫機使用。

當我禁用匿名並啓用Windows身份驗證時,該站點將在身份驗證後正常加載,但我會在控制檯(在Chrome或iPad 2上)看到錯誤,表示無法讀取清單文件。

在iPad上,錯誤在於應用程序緩存文件無法讀取。在Chrome中,特定的錯誤是「應用程序緩存錯誤事件:清單讀取失敗(401)」。我可以看到web服務器中的401響應代碼都記錄在這兩個實例中。

爲什麼這種行爲似乎意外的是所有其他資源(CSS,JavaScript,圖像)的請求都按預期工作。另外,我可以瀏覽到我的.appcache文件並加載它。

任何人都可以解釋發生了什麼?

有沒有其他人遇到這個,並找到了解決辦法?

+0

在Apache上也遇到同樣的問題,我通過.htaccess爲包含應用程序的目錄啓用了HTTP基本驗證。看起來Chrome並沒有在爲應用程序緩存清單發出請求時傳遞帶有憑據的Authorization標頭。 – 2013-01-25 19:31:01

回答

0

我也遇到了這個問題。完全如您所述,但我在Apache上使用基本身份驗證。我將嘗試公開主要文件。

1

不知道這是否仍然相關,但我也有這個問題。

當我的網站發出AJAX請求時,一旦頁面加載,我被要求提供發出請求的憑據。一旦發生這種情況,運行applicationCache.update()會導致應用程序緩存正確更新。

因此,作爲解決方法,可能嘗試向某個事件發出AJAX請求,以便提示用戶輸入憑據,然後致電applicationCache.update()

0

我知道它的一個老問題,但我有完全相同的問題導致我在這裏。

我的設置是:
服務器 - IIS8
認證 - 窗戶
匿名身份驗證 - 啓用(這樣做,所以我能得到我的動態表現,無論認證要獲取,我只好再裝點其他控制器與[Authorize]

通過上述設置,應用程序可以正確緩存,但是當從緩存中加載時,如果由於用戶未「登錄」而導致某些部分沒有獲取(例如授權內容)並因此使整個更新甚至失敗。

我的解決辦法是在Ajax調用添加到被授權的資源,這樣,當用戶處於聯機,他們將被提示登錄意義高速緩存被更新,下一次他們再次授權。

相關問題