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" 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

如此设置后,成功解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值