我正在使用MVC6(asp.net 5)使用angular并在我的代码以发布模式运行时尝试从CDN位置加载脚本,但由于某些原因脚本从不加载。
我已经读过您需要在HTML文件中添加元标记,我已经这样做了。
<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; style-src 'self' https://ajax.aspnetcdn.com; font-src 'self' http://netdna.bootstrapcdn.com" />
在我的Index.cshtml上,我有这个。
<environment names="Staging,Production">
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"
asp-fallback-src="~/lib/angular/angular.min.js"
asp-fallback-test="window.angular">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.15/angular-ui-router.min.js"
asp-fallback-src="~/lib/angular-ui-router/release/angular-ui-router.js"
asp-fallback-test="window.angular && window.angularUiRouter">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-local-storage/0.2.2/angular-local-storage.min.js"
asp-fallback-src="~/lib/angular-local-storage/dist/angular-local-storage.js"
asp-fallback-test="window.angular && window.localStorage">
</script>
但他们永远不会加载。我尝试使用IISExpress运行代码,并使用DNX Web
命令。
我有this帖子,这就是我创建META标签的方式,但不确定为什么它不起作用。我在Chrome中试过这个,在控制台下,我只是得到错误
答案 0 :(得分:4)
将以下内容放入网页标题部分:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://cdnjs.cloudflare.com ">
答案 1 :(得分:1)
在我的情况下,此策略是通过headers
设置的(此属性在AccountController和其他一些设置中设置)。
基本上,这会在meta
中添加覆盖mssql_query
标记的默认政策。因此,您需要更改此策略或从Controller中删除该属性。
答案 2 :(得分:0)
Manikandan C 为什么要打扰CDN?您真的需要吗?这是什么类型的应用程序/网站?您是否正在处理无法在本地存储文件的GB / TB数据?这些静态文件负担重吗? 我已经在您的标记中注意到,如果无法点击CDN,您就有一个备份源。
asp-fallback-src =“〜/ lib / angular / angular.min.js”
因此,如果您的项目很小,本地站点还是没有很重的负载,那么我认为您真的不需要CDN。我认为它会像现在一样给您带来更多问题。作为解决方案,我将删除meta标签。
我一直在努力并继续维护多个MVC-MVC5应用程序,其中一些具有CDN,但主要是为了确保我们的本地文件由于某种原因不可用,尽管您确实需要CDN,但还是遇到了问题。要对CDN受到损害尽责,这是CDN并非100%可行之路的另一个原因。 我们从来没有像您发布的控制台错误那样的控制台错误,也从未在视图中放置META标签。不要相信您阅读的所有内容。如果只有静态文件,那么使用CDN是有意义的。 要记住的重要规则是,如果您的html中有内联代码或代码的任何动态部分,则CDN会被多次调用,因此将其用作主要资源没有意义。