首页 > 解决方案 > 如何在 ScriptBundle for .NET MVC (4.7.2) 应用程序中包含 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 哈希和跨域标记的文章。

请帮助我。

标签: c#asp.net-mvcasp.net-mvc-4subresource-integrity

解决方案


尝试这个:

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

推荐阅读