$scope.tinymceOptions = {
plugins: 'template',
templates: '/rest/templates'
}
@RequestMapping(value = "/rest/templates", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
@ResponseBody
public Set<TemplateVO> getTemplates() {
Set<TemplateVO> result = // ...
return result;
}
如您所见,在templates
选项中,我指定了一个生成模板列表的URL。当用户执行“插入模板”命令时,将调用控制器方法getTemplates()
,并在JSON数组中返回所有模板。
[{"title":"test","description":"test","content":"test"},{"title":"test 2","description":"test","content":"test 2"}]
我希望它们会被展示出来。但是我收到一条消息,上面写着“没有定义模板”。
当我指定与对象相同的项目时,模板插入工作正常:
$scope.tinymceOptions = {
plugins: 'template',
templates: [
{title: 'test', description: 'test', content: 'test'},
{title: 'test 2', description: 'test', content: 'test 2'}
]
}
从远程URL加载TinyMCE模板的正确方法是什么?
UPD。我在JSON.parse()
内(谷歌浏览器中)警告异常
EvalError:拒绝将字符串评估为JavaScript,因为
'unsafe-eval'
不是以下内容安全策略指令中允许的脚本源:"script-src 'self'"
。在eval
(本地)Object.parse
...
答案 0 :(得分:0)
您的Content Security Policy不允许进行JS评估,因为它不安全。您可以将'unsafe-eval'
添加到您的CSP,模板加载将起作用:
<!-- Chrome 25+; FireFox 23+; Safari 7+ -->
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval'"/>
<!-- FireFox 4+; IE 10+ (not fully) -->
<meta http-equiv="X-Content-Security-Policy" content="xhr-src 'self' 'unsafe-eval'"/>
<!-- Chrome 14+; Safari 6+ -->
<meta http-equiv="X-WebKit-CSP" content="script-src 'self' 'unsafe-eval'"/>