使用CDN和完整性属性捆绑JS文件

时间:2017-02-17 20:10:02

标签: asp.net-mvc-5 bundle cdn

在ASP.NET MVC 5中,是否可以使用BundleColletion.UseCdn并使用HTML完整性属性进行渲染?例如,有没有做到这一点:

bundles.UseCdn = true;
bundles.Add(
    new ScriptBundle("~/bundles/jquery", "https://code.jquery.com/jquery-3.1.1.min.js")
        .Include("~/Scripts/js/jquery/jquery-3.1.1.min.js")
);

渲染为这个?

<script
  src="https://code.jquery.com/jquery-3.1.1.min.js"
  integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
  crossorigin="anonymous"></script>

3 个答案:

答案 0 :(得分:4)

部分答案。

添加crossorigin =&#34;匿名&#34;您可以使用 @ Scripts.RenderFormat

@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}\" crossorigin=\"anonymous\"></script>", "~/bundles/jquery")

您还可以在RenderFormat中包含 integrity =&#34; sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8 =&#34; 部分,但它看起来不是一个好的解决方案。

答案 1 :(得分:1)

当CDN失败时,我在ASP.NET MVC 5项目中尝试过这种方式

@Scripts.RenderFormat("<script src='{0}' integrity='sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa' crossorigin='anonymous'></script>", "~/bundles/bootstrapJS")

这将生成(在开发人员工具内部)

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

this的答案中我们发现,如果脚本无法从CDN加载失败,则存在错误

所以我们在标记内手动添加脚本。

<html>
<head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
   <script>(window.jQuery) || document.write('<script src="/Scripts/jquery-1.12.4.min.js"><\/script>');</script>
</head>
<body></body>
</html>

答案 2 :(得分:0)

你可以拥有它

 <script src='@Scripts.Url("~/bundles/jquery")' crossorigin="anonymous" integrity="value"> </script>