天天看點

Failed to find a valid digest in the ‘integrity‘ attribute for resource解決辦法

Failed to find a valid digest in the ‘integrity‘ attribute for resource解決辦法

被這個錯誤坑了好多天

前提:架構Blazor

項目在本地運作沒問題,釋出到伺服器後,報錯在資源的“完整性”屬性中找不到有效摘要

找解決辦法的過程中開始以為是跨域資源共享和子資源完整性問題,詳見:https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity#cross-origin_resource_sharing_and_subresource_integrity

使用以下

<script>

元素來告訴浏覽器,在執行

https://example.com/example-framework.js

腳本之前,浏覽器必須首先将腳本與預期的哈希進行比較,并驗證是否存在比對項。

在報錯的_frameworkjs裡設定了integrity值和跨域請求

<script src="_framework/blazor.webassembly.js" integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"

        crossorigin="anonymous"></script>

但是沒有效果,遂删

又試了其他部落客的辦法:

    <!-- Bootstrap CSS -->

  <link rel="stylesheet" href="assets/css/bootstrap.min.css" target="_blank" rel="external nofollow" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">

去掉 integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous"

全局搜了下,項目裡沒有設定integrity的地方且不可能一個個去設定

最後解決辦法:

在項目csproj下屬性PropertyGroup下加一句屬性BlazorCacheBootResourcess設定為false,禁用非PWA應用程式的完整性檢查

<PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <BlazorCacheBootResources>false</BlazorCacheBootResources>
  </PropertyGroup>
           

BlazorCacheBootResources

也禁止Blazor的高速緩存的預設行為

.dll

.wasm

根據他們的SHA-256散列和其他檔案,因為屬性訓示SHA-256散列不能在正确性依賴。即使使用此設定,浏覽器的正常HTTP緩存仍可能會緩存那些檔案,但是是否發生這種情況取決于您的      Web伺服器配置及其所

cache-control

服務的标頭。

解決文檔位址:https://docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/webassembly?view=aspnetcore-5.0

如此設定後,成功解決。

繼續閱讀