开发Outlook Add-In遇TrustedScript赋值错误,求解决方案
解决Outlook Add-In中的"This document requires TrustedScript assignment"错误
这个错误是因为Outlook Add-In的运行环境强制启用了Trusted Types安全机制——它不仅要求HTML内容是TrustedHTML类型,如果代码里存在动态插入脚本、设置script.src或使用动态执行脚本的方法(比如eval),还必须用TrustedScript类型来赋值。你当前的Trusted Types政策里createScript只是直接返回字符串,不符合安全要求,所以触发了错误。
修复步骤:
完善Trusted Types政策,严格处理脚本相关操作
不要直接返回字符串,要对脚本内容/URL做可信校验,并且用TrustedScript类型包装(环境支持的前提下)。示例代码:if (window.trustedTypes && window.trustedTypes.createPolicy) { window.trustedTypes.createPolicy('default', { createHTML: (string) => DOMPurify.sanitize(string, { RETURN_TRUSTED_TYPE: true }), createScriptURL: (url) => { // 只允许从你的Add-In可信域名加载脚本 const allowedOrigins = ['https://your-add-in-domain.com']; const urlObj = new URL(url); if (allowedOrigins.includes(urlObj.origin)) { return url; } throw new Error(`不可信的脚本URL: ${url}`); }, createScript: (script) => { // 严格限制动态脚本内容,只允许预先定义的可信脚本 const allowedScripts = ['console.log("合法脚本内容")']; if (allowedScripts.includes(script)) { return window.trustedTypes.createScript(script); } throw new Error(`不可信的脚本内容: ${script}`); }, }); }排查代码中的动态脚本操作
- 彻底避免使用
eval()、new Function()这类动态执行脚本的方法 - 不要动态设置
<script>标签的src属性,除非能100%确认来源安全 - 如果必须插入脚本内容,一定要先通过上面的Trusted Types政策处理
- 彻底避免使用
检查Add-In清单配置
- 确认清单里的
Permissions设置合理,不要申请不必要的权限 - 确保
Domains节点包含所有你需要加载资源的可信域名
- 确认清单里的
如果你的代码里没有主动操作脚本,那可能是第三方库(包括DOMPurify)的内部逻辑触发了检查,此时可以排查第三方库是否兼容Trusted Types,或者调整DOMPurify的配置,确保它不会生成意外的脚本内容。
内容的提问来源于stack exchange,提问作者dkrks
相关产品推荐
相关产品推荐

