c# - 如何在 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 哈希和跨域标记的文章。
请帮助我。
解决方案
尝试这个:
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");
推荐阅读
- python - 合并后python pandas更改顺序和列名
- apache-flink - Apache Flink 在 UI 中显示自定义指标,但普罗米修斯指标报告器没有抓取它们
- laravel - Laravel:如何保存到两个表中,但是,第一个表的 id 将作为外部 id 保存到第二个表中
- c++ - 子聚合的指定初始化器是否需要花括号?
- clickhouse - 获取 ClickHouse 表前 n 行的校验和(cityHash64)
- blazor - 有什么方法可以禁止组件使用“ShouldRender”进行渲染,但允许其子组件在他们认为合适的时候重新渲染?
- r - 用 R 对 A 行的 A 元素和 A 矩阵的 A 列进行排序
- css - 使用 css-grid 创建矩阵
- django - 带有微服务的 Django Lambda,在 Lambda 函数中打破 Django 项目
- c# - 为什么我的多线程代码没有更快?