首页 > 解决方案 > AngularJS 问题:$sce:insecurl 尽管 $sce.trustAsResourceUrl

问题描述

我使用 CDN 中的模板进行了设置,通常可以正常工作,但我会定期收到此错误:

ng-error: Error: [$sce:insecurl] http://errors.angularjs.org/1.7.5/$sce/insecurl?p0=https%3A%2F%2Fcomplicemail-herokuapp-com.global.ssl.fastly.net%2Fstatic%2Ftemplates%2Fviewschedule.a15ce4bf.html

我为 grep 的代码库viewsched,实际上代码中仅有的两个地方,该模板是我的服务工作者中的预缓存列表,以及 angularjs 文件中的这一行:

$scope.scheduleTemplateUrl = $sce.trustAsResourceUrl('/templates/viewschedule.html')

Gulp 将该行转换为引用 CDN 的行:

$scope.scheduleTemplateUrl = $sce.trustAsResourceUrl('https://complicemail-herokuapp-com.global.ssl.fastly.net/static/templates/viewschedule.a15ce4bf.html')

我知道那部分工作正常,因为 insecurl 错误显示了 CDN url。

我的第一个猜测是这个问题类似于“出于某种原因(例如劣质互联网),浏览器当时无法连接到 CDN 并且无法获取文件,从而给出了某种 AngularJS 认为不安全的 HTTP 响应代码。但是我认为这会产生这个问题(我也定期得到)

ng-error: Error: [$templateRequest:tpload] http://errors.angularjs.org/1.7.5/$templateRequest/tpload?p0=https%3A%2F%2Fcomplicemail-herokuapp-com.global.ssl.fastly.net%2Fstatic%2Ftemplates%2Ftimer%2Fuser-other.27734af8.html&p1=-1&p2=

有任何想法吗?还对如何更优雅地处理 tpload 错误情况的想法感兴趣,在这种情况下,网址是正确的,但当时互联网刚刚崩溃。

标签: angularjscdnangularjs-templatesangularjs-sce

解决方案


推荐阅读