AngularJS:如何解决“尝试在安全上下文中使用不安全值”?

Posted

技术标签:

【中文标题】AngularJS:如何解决“尝试在安全上下文中使用不安全值”?【英文标题】:AngularJS: How to resolve "Attempting to use an unsafe value in a safe context"? 【发布时间】:2017-06-19 05:03:13 【问题描述】:

当我尝试将我的数据显示为 text-html 时,它以 HTML 格式显示,但是当我刷新页面时,我收到此错误:

[$sce:unsafe] 尝试在安全上下文中使用不安全值。

这是我的 AngularJS 代码:

data.attributes.task_name = $sce.trustAsHtml(data.attributes.task_name);

HTML

<span ng-bind-html="taskdata.attributes.task_name" data-html="true" title="reminder.attributes.message"></span>

【问题讨论】:

my answer 解决了您的问题吗? 【参考方案1】:

来自Angular documentation

未发现提供用于特定上下文的值 安全/值得信赖。

AngularJS 的Strict Contextual Escaping (SCE) 模式(由 默认),需要在某些上下文中绑定才能产生一个值 在这种情况下可以安全使用。 (例如加载一个 来自 URL 的 AngularJS 模板要求 URL 被考虑 安全加载资源。)

这有助于防止 XSS 和其他安全问题。阅读更多Strict Contextual Escaping (SCE)

您可能希望包含 ngSanitize 模块以使用自动 消毒。


您必须包含 ngSanitize

index.html 上加载它:

<script src="lib/angular/angular-sanitize.min.js"></script>

将其作为依赖项注入您的 app.js

angular.module('myApp', ['...', 'ngSanitize']);

【讨论】:

这让我可以在 AngularJS 中用换行符拆分连接一个字符,这真是太神奇了。谢谢! 包括 ngSanitize 为我修复了它!谢谢!

以上是关于AngularJS:如何解决“尝试在安全上下文中使用不安全值”?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 angularjs 未捕获的错误:[$injector:modulerr]?

AngularJS:如何解决“尝试在安全上下文中使用不安全值”?

如何使用 angularjs $http 修复我的 jsonp 回调以解决“意外令牌”错误?

如何使用 AngularJS 将文件上传到 Google Drive

如何在angularjs的下拉列表中添加图像

AngularJS:使用 $resource 上传文件(解决方案)