2016-11-03 68 views
1

我正在實施子資源完整性檢查。我想實現一個回退,這樣1)瀏覽器從我的CDN加載,執行完整性檢查並繼續進行;或者2)在完整性檢查失敗的情況下,嵌入式腳本啓動並從我的應用程序中檢索所需的腳本服務器(我的控制下的資源)。在子資源完整性檢查中處理加載錯誤

我有一個簡單的javascript捕獲window.onerror事件,但腳本實際上檢測到未捕獲的ReferenceError(我的頁面引用外部資源中的腳本),而不是瀏覽器錯誤「無法找到有效的摘要。 ..「。

有沒有人發現一種方法來檢測完整性檢查失敗,然後使用JavaScript從更可信的位置拉第三方託管資源?

回答

1

您可以檢查是否加載的資源存在,並加載一個備用本地副本:

<script src="https://code.jquery.com/jquery-1.12.0.min.js" integrity="sha256-Xxq2X+KtazgaGuA2cWR1v3jJsuMJUozyIXDB3e793L8=" crossorigin="anonymous"></script> 
<script> 
if (!window.jQuery) { 
       var script = document.createElement('script'); 
       script.src = '/local-resources/js/jquery-1.12.0.min.js'; 
       script.async = false; 
       document.head.appendChild(script); 
      } 
</script>