【问题标题】:How to get parent URL in a shiny-app如何在闪亮的应用程序中获取父 URL
【发布时间】:2015-09-03 21:39:27
【问题描述】:

我在我的网站中嵌入了一个带有 iframe 的 Shiny 应用程序,我现在正试图保护我的 Shiny 应用程序:我希望 iframe 只能在我的网站中访问,而不是直接通过其 URL 访问。

  <iframe name="rshiny" 
    src="http://url-of-my-shiny-app/" style="border: none; width: 100%;height:800px;">
  </iframe>  

为此,我试图在我的 Shiny-app 中获取包含 iframe 的父级 URL,并阻止它是否不是好网站。

问题是:我找到了如何在许多语言中获取 URL 父级,但 R. 有谁知道我该怎么做?

我有另一个可能的解决方案,但暂时不起作用:

postForm('http://url.php', .params = params, curl = curl, style="POST")

我想我可以从我的网站向我的 R 应用程序发送一个 post 变量,就像一个密钥一样,只允许知道密钥的网站访问。 但我不能让它工作。

编辑:我认为这个问题与 cmets 中建议的链接不同。实际上,建议的选项似乎在 R Shiny 中不可用。

【问题讨论】:

  • 限制网站嵌入的最佳方法是在提供闪亮的应用程序时使用X-Frame-Options 标头,并仅使用合法地址使用ALLOW FROM。如何添加此标头取决于您为应用提供服务的方式。
  • 感谢您的回答:但实际上这里的情况可能有所不同,因为我在一个闪亮的应用程序中:在 R 中我不知道是否可以为我的 iframe 使用这样的选项,我已经搜索过没有找到合适的东西。
  • 我简要地查看了文档,似乎没有任何简单的方法可以将标题添加到响应中。如果我要解决这个问题,我会在端口 80/443 上运行一个 nginx 服务器作为反向代理并手动添加这些标头。
  • 好吧,我暂时无法使用 nginx 服务器:最好的方法是使用这些适用于 Shiny 的 X-frame 选项。有谁知道怎么做?

标签: r url iframe shiny parent


【解决方案1】:

我找到了解决办法!

在这里,您可以找到一种在闪亮应用中获取“GET”变量的方法。 https://github.com/brianbolt/rShinyApps/tree/master/getParameters.shiny 。 在我的 PHP 代码中,我计算了一个 md5 密码,该密码取决于日期,使其每天都在更改,并将其用作 iframe 中的 GET 参数:

<iframe name="rshiny" 
    src="youradress?bins=<?php echo $md5password;?">
  </iframe>  

从那时起,我可以直接在我的代码中使用它(参见我共享的代码中的input$n_breaks)。 我在 server.R 中创建了一个反应函数,它计算相同的 md5 密码。

最后,我们将其与参数中给出的密码进行比较。如果相同,我们打开绘图,读取数据......否则,我们就停止该过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-27
    • 2013-07-08
    • 2018-12-29
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    相关资源
    最近更新 更多