You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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工作区安全设置

  1. 登录Power BI服务,进入报表所在工作区。
  2. 点击设置 → 安全 → 外部链接设置。
  3. 检查是否开启了「为所有外部链接添加noopener noreferrer」选项,若开启则关闭(需工作区管理员权限)。
  4. 重新发布报表并测试。

方法3:修改报表内链接的打开方式(备选)

在Power BI Desktop中编辑报表,将工单链接的打开方式设置为「在当前窗口打开」,而非「在新窗口打开」。此方法可避免添加noopener noreferrer,但会导致用户离开当前报表页面,需权衡体验。

验证步骤

  1. 应用上述任一方法后,刷新嵌入报表。
  2. 用开发者工具确认链接的rel属性已移除。
  3. 点击链接,检查是否正常跳转至工单页面且未被登出。

内容的提问来源于stack exchange,提问作者NutellaKing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:43:14