【问题标题】:Remove share bar from power bi public embed从 power bi public embed 中删除共享栏
【发布时间】:2021-10-08 21:26:36
【问题描述】:

我在网上发布了一份关于 power bi 的报告,我将在我的计算机上创建一个本地页面,以便通过嵌入代码查看它并在 Dropbox 上与其他人分享。

我想移除包含社交媒体链接的按钮栏以防止分享。

我也可以阻止显示 iframe 源链接吗?

可能使用 java 脚本。

请详细描述一下,因为我是数据分析师,不会写java script或html。

谢谢

嵌入代码:

<iframe width="600" height="373.5" src="https://app.powerbi.com/view?r=eyJrIjoiYWYzNWU3NjktMjRmOC00NjdkLThlZjktZjEzODRhOWE3MTI4IiwidCI6IjFhYTk1NjRiLTE4YmUtNDU3YS04ZmFjLWEyOTZmNjdjMzU5OSJ9&pageName=ReportSection2" frameborder="0" allowFullScreen="true"></iframe>

【问题讨论】:

  • 你不能隐藏它,也不能阻止人们分享它。发布到网络使您的报告和数据公开,每个人都可以看到它。不要使用您想要保密的信息!
  • 如果您想保持隐私,您可能希望从问题中删除实时网址。如果你想分享它,我建议为用户购买 Power BI 许可证

标签: javascript html iframe powerbi


【解决方案1】:

您完全可以从初始视图中隐藏它。忽略不可能的人。

使用“发布到网络”功能 (IFrame) 后,将该 URL 放在下面的代码中并粘贴到您的网站中。您需要将高度和宽度调整为您想要的外观。这里的目标是使用 clip:rect 功能。调整高度(在这种情况下,1040 比原来的 1080 小)以限制/切断页脚。

<div id="content">
<div style="height:1080px;width:1920px">
   <iframe width="1920" height="1080" src="PUT URL HERE" frameborder="0" style="position:absolute; clip:rect(0px,1920px,1040px,0px);
            bottom:-0px; allowFullScreen=" true"=""></iframe>
    </div>
</div>

【讨论】:

    【解决方案2】:

    您是否尝试过反向代理来劫持页面并添加样式以隐藏栏?我已经设法通过 Cloudflare Workers 实现了这一目标。

    这种方法的另一个好处是您可以从自己的自定义域中显示仪表板。

    您将需要一个 Cloudflare 帐户,您可以在其中使用以下脚本配置工作人员。如果您将 Cloudflare 设置为您的 NameServer,那么您可以使用您的域名在工作人员上进行自定义重定向。

    const upstream = 'app.powerbi.com'
    const upstream_path = '/'
    
    // Whether to use HTTPS protocol for upstream address.
    const https = true
    
    // Whether to disable cache.
    const disable_cache = true
    
    addEventListener('fetch', event => {
        event.respondWith(fetchAndApply(event.request));
    })
    
    class RemoveElement {
    element(element) {
        element.append(`
    <style>
    .embeddedLandingRootContentLogoVisible { height: 100% }
    .logoBarWrapper { display: none }
    </style>
    `, { html: Boolean })
        console.log(`Incoming element: ${element.tagName}`)
    }
    }
    
    async function fetchAndApply(request) {
    
        const region = request.headers.get('cf-ipcountry').toUpperCase();
        const ip_address = request.headers.get('cf-connecting-ip');
        const user_agent = request.headers.get('user-agent');
    
        let response = null;
        let url = new URL(request.url);
        let url_hostname = url.hostname;
    
        if (https == true) {
            url.protocol = 'https:';
        } else {
            url.protocol = 'http:';
        }
        var upstream_domain = upstream;
    
        url.host = upstream_domain;
        if (url.pathname == '/') {
            url.pathname = upstream_path;
        } else {
            url.pathname = upstream_path + url.pathname;
        }
    
    
            let method = request.method;
            let request_headers = request.headers;
            let new_request_headers = new Headers(request_headers);
    
            new_request_headers.set('Host', upstream_domain);
            new_request_headers.set('Referer', url.protocol + '//' + url_hostname);
    
            let original_response = await fetch(url.href, {
                method: method,
                headers: new_request_headers
            })
    
            response = new Response(original_response.body, original_response)
            let original_text = null;
            let response_headers = original_response.headers;
            let new_response_headers = new Headers(response_headers);
            let status = original_response.status;
    
            if (disable_cache) {
                new_response_headers.set('Cache-Control', 'no-store');
            }
    
            new_response_headers.set('access-control-allow-origin', '*');
            new_response_headers.set('access-control-allow-credentials', true);
            new_response_headers.delete('content-security-policy');
            new_response_headers.delete('content-security-policy-report-only');
            new_response_headers.delete('clear-site-data');
    
            if (new_response_headers.get("x-pjax-url")) {
                new_response_headers.set("x-pjax-url", response_headers.get("x-pjax-url").replace("//" + upstream_domain, "//" + url_hostname));
            }
    
            return new HTMLRewriter().on('body', new RemoveElement()).transform(response);
    }
    

    设置完成后,新的嵌入 URL 将采用以下形式: customdomain.com/view?r=eyJrIjE1NS00......

    请查看此存储库以获取更多说明: https://github.com/Hugoberry/PowerBI-nologo-proxy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多