Office JS Dialog API报OSF.DDA 7000权限不足问题咨询

我的Office加载项任务窗格部署URL为 https://presimax.in/testhome,弹窗页面部署URL为 https://presimax.in/word
弹窗页面代码如下:
<html> <head> <title></title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/2.1.0/fabric.min.css"> <link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/2.1.0/fabric.components.min.css"> <link rel="stylesheet" href="Styles/index.css"> <script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.1.min.js"></script> <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript" crossorigin="anonymous"></script> </head> <body> <div class="ms-typeramp-dialog"> <p class="ms-font-m">请等待此窗口关闭后再继续使用加载项(已修改)。</p> </div> <script> setTimeout(() => { (function () { "use strict"; Office.initialize = function() { $(document).ready(function () { try { Office.context.ui.messageParent("Test"); } catch(err) { var messageObject = {outcome: "failure", error: err.message}; var jsonMessage = JSON.stringify(messageObject); Office.context.ui.messageParent("message to parent " + jsonMessage); } }); } }()); }, 10000); </script> </body> </html>
运行上述配置时报错:
OSF.DDA.Error
code: 7000
message: "You don't have sufficient permissions for this action."
同时出现如下警告:
"Tracking Prevention blocked access to storage for https://appsforoffice.microsoft.com/lib/1/hosted/office.js."
该功能此前已正常运行2个月,近期突然出现上述报错,不清楚故障原因,恳请各位帮忙解答,非常感谢。
故障原因及解决步骤
- 代码逻辑错误
你当前将Office.initialize的注册逻辑放在了10秒延时的setTimeout内部,office.js加载完成后会立即检查是否存在初始化回调,超时未检测到回调就会直接结束初始化流程,你后续赋值的Office.initialize永远不会触发,Office上下文未正确初始化,调用messageParent自然会触发权限不足报错。
修正方案:将Office.initialize的注册提到script标签顶层,延时逻辑放到初始化回调内部,示例如下:
- 代码逻辑错误
Office.initialize = function() { $(document).ready(function () { setTimeout(() => { try { Office.context.ui.messageParent("Test"); } catch(err) { var messageObject = {outcome: "failure", error: err.message}; var jsonMessage = JSON.stringify(messageObject); Office.context.ui.messageParent("message to parent " + jsonMessage); } }, 10000); }); }
- 清单配置校验
检查加载项的XML清单文件,确认<AppDomains>节点下已添加<AppDomain>https://presimax.in</AppDomain>,弹窗页面域名必须提前加入可信域列表,否则跨页面通信会被拦截。
- 清单配置校验
- 跟踪防护拦截处理
你看到的存储访问警告是近期Office使用的Edge WebView2运行时更新后,默认跟踪防护等级提升导致的,会阻断office.js在第三方上下文下的存储访问,最终导致Office上下文初始化异常。
修正方案:给你的任务窗格和弹窗页面的服务端响应添加P3P头,值为CP="CAO PSA OUR",即可绕过跟踪防护拦截。
- 跟踪防护拦截处理
- 临时验证方法
你可以将本地Edge浏览器的跟踪防护等级调整为基本,重启Office后再次测试,如果此时报错消失,即可确认是跟踪防护策略导致的问题,按上述第三步配置响应头即可永久解决。
- 临时验证方法
内容的提问来源于stack exchange,提问作者bhavasagar
相关产品推荐
相关产品推荐

