【问题标题】:get the actuel domain name (server name) in Shiny app在 Shiny 应用中获取实际域名(服务器名称)
【发布时间】:2020-10-27 23:08:53
【问题描述】:

我有 3 个服务器,devtestprod。我的 Shiny 代码应该从 dev 部署到 prod

现在的问题: 在ui.R 中,我通过href = 'https://dev.com/start/' 引用另一个名为start 的站点。是否可以自动获取域名、devtestprod?类似,`href = 'https://实际域是什么.com/start/'

附录:正如 DanielR 所回答的,可以使用session$clientData$url_hostname,但是我的问题是我需要dashboardHeader 中的主机名。在ui.R 中我需要动态href 的地方是:

dashboardPage(
  dashboardHeader(title = "KRB",
                  
                  titleWidth = 150,
                  
                  tags$li(a(href ='https://dev.com/start/

【问题讨论】:

  • 有什么理由不能在这个地方只使用相对 URL?
  • 到目前为止我知道,我可以相对地参考 index.html,或者不?在这种情况下,页面开始是由闪亮的应用程序创建的。
  • 这与 index.html 无关。只要您位于https://dev.com/… 的某个位置,相对 URL /start/ 就会解析为 https://dev.com/start/
  • @CBroe 你是对的!我以为我可以相对参考 index.html。而不是闪亮的应用程序,在这种情况下,开始是应用程序的文件夹。但我错了:(。你能发表你的答案吗

标签: javascript html shiny shiny-server


【解决方案1】:

您可以在服务器函数中使用session$clientData$url_hostname 获取主机名。见https://shiny.rstudio.com/articles/client-data.html

这是一个小应用程序:

library(shiny)
ui <- fluidPage(
    uiOutput('urlui')
)
server <- function(input, output, session) {
    output$urlui <- renderUI({
        htmltools::a('my link',
                     href=paste0('http://', session$clientData$url_hostname))
    })
}
shinyApp(ui = ui, server = server)

【讨论】:

  • 您好丹尼尔,感谢您的回答。我的问题是在 dashboardPage(dashboardHeader( ... tags$li(a(href =...)) 中的 ui 中。问题是,如何将主机名传递给 tags$li ?
  • 嗨。不是直接在ui中使用a标签,而是在ui中使用uiOutput,并从服务器输出RenderUI中的标签。
【解决方案2】:

现在的问题是:在 ui.R 中,我通过 href = 'https://dev.com/start/' 引用另一个名为 start 的站点。是否可以自动获取域名、dev、test和prod?

对于您想要在这里实现的目标,您不需要获取实际的主机名,如果您可以使用相对 URL 而不是完整的绝对 URL。

代替

tags$li(a(href ='https://dev.com/start/' …

使用

tags$li(a(href ='/start/' …

带有前导斜杠的相对 URL 指的是域根目录,因此这应该会自动解析为 https://[hostname]/start/,而在这种情况下,您无需确定 [hostname] 的实际含义。浏览器在解析相对 URL 时基本上会根据当前显示的主文档的地址为您完成该部分。

【讨论】:

  • 我接受了答案,但是根据我们之前的讨论,我使用了 'tags$li(a(href = '../start/''。非常感谢 :)
猜你喜欢
  • 2011-11-04
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多