微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 .NET MVC (4.7.2) 应用程序的 ScriptBundle 中包含 SRI 哈希?

如何解决如何在 .NET MVC (4.7.2) 应用程序的 ScriptBundle 中包含 SRI 哈希?

目前我的包使用的是公共库的本地副本。

bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                      "~/Scripts/bootstrap.js","~/Scripts/moment.min.js","~/Scripts/bootstrap-datetimepicker.min.js","~/Scripts/respond.js"));

我想转换为使用 CDN,并希望通过包含哈希值来确保我遵守 SRI。我找到了很多关于在捆绑配置中使用 CDN 的文章,但没有关于如何在捆绑时包含 SRI 哈希和 crossorigin 标签

请帮助我。

解决方法

试试这个:

 public static void RegisterBundles(BundleCollection bundles)
 {
    BundleTable.EnableOptimizations = true;
    string version = string.Format("{0}",DateTime.Now.ToString("yyyyMMddHHmmss"));
    bundles.UseCdn = true;
    var cdnUrl = "CDN url"+ "{0}?" + version;
    
    bundles.Add(new ScriptBundle("~/bundles/bootstrap",string.Format(cdnUrl,"bundles/bootstrap")).Include(
                      "~/Scripts/bootstrap.js","~/Scripts/moment.min.js","~/Scripts/bootstrap-datetimepicker.min.js","~/Scripts/respond.js"));
 
 }

并在 Global.asax.cs 内的 Application_BeginRequest 中添加此行以允许跨域

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin","CDN url");
,

试试下面的代码:

bundles.UseCdn = true; bundles.Add(new ScriptBundle("~/bundles/jquery","http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js").包含( "~/Scripts/jquery-{version}.js"));

并在 debug="false" 模式下运行您的应用程序或使用 BundleTable.EnableOptimizations = true;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。