Power BI Apps Own Data Embedded URL点击致用户登出问题求助
Power BI Apps Own Data嵌入链接点击登出问题解决方案
问题根源
Power BI Apps Own Data嵌入模式下,报表内的外部链接会被自动添加rel="noopener noreferrer"属性。该属性会阻止新窗口/标签页继承当前页面的身份验证Cookie,导致跳转工单页面时因缺少登录凭证被系统登出。而直接复制链接到应用其他区域打开时,Cookie可正常携带,因此能正常访问。
验证方法
打开浏览器开发者工具(F12),定位报表内的工单链接元素,查看是否存在rel="noopener noreferrer"属性。若存在,即可确认问题根源。
解决方法
方法1:通过Power BI JavaScript SDK拦截并修改链接行为
在嵌入报表的代码中,监听报表加载/渲染事件,拦截链接点击,手动处理跳转并移除危险属性:
// 假设reportContainer是嵌入报表的DOM容器,embedConfig是嵌入配置 const report = powerbi.embed(reportContainer, embedConfig); // 封装链接修复逻辑 function fixTicketLinks() { const ticketLinks = reportContainer.querySelectorAll('a[href^="https://MYCOMPANY.com/Ticket/"]'); ticketLinks.forEach(link => { // 克隆元素移除旧监听器,避免重复绑定 const newLink = link.cloneNode(true); link.replaceWith(newLink); // 拦截点击事件,手动跳转 newLink.addEventListener('click', (e) => { e.preventDefault(); // 打开链接时不添加noopener noreferrer window.open(newLink.href, '_blank'); }); // 移除默认添加的rel属性 newLink.removeAttribute('rel'); }); } // 报表加载完成和渲染完成时都执行修复 report.on('loaded', fixTicketLinks); report.on('rendered', fixTicketLinks);
方法2:调整Power BI工作区安全设置
- 登录Power BI服务,进入报表所在工作区。
- 点击设置 → 安全 → 外部链接设置。
- 检查是否开启了「为所有外部链接添加noopener noreferrer」选项,若开启则关闭(需工作区管理员权限)。
- 重新发布报表并测试。
方法3:修改报表内链接的打开方式(备选)
在Power BI Desktop中编辑报表,将工单链接的打开方式设置为「在当前窗口打开」,而非「在新窗口打开」。此方法可避免添加noopener noreferrer,但会导致用户离开当前报表页面,需权衡体验。
验证步骤
- 应用上述任一方法后,刷新嵌入报表。
- 用开发者工具确认链接的
rel属性已移除。 - 点击链接,检查是否正常跳转至工单页面且未被登出。
内容的提问来源于stack exchange,提问作者NutellaKing
相关产品推荐
相关产品推荐

