apache 获取Shiny中的响应头变量

eni9jsuy  于 2023-02-24  发布在  Apache
关注(0)|答案(3)|浏览(115)

我的apache将LDAP登录传递给标题中的变量X-Remote-User

但我不知道如何在闪亮的应用程序。任何想法?也许解决方案可以是一些java脚本?

vuv7lop3

vuv7lop31#

好的,我解决了,首先在ui.R js函数中包含:
www/js/getLogin.js

function requestLogin() {
var client = new XMLHttpRequest();
client.open("GET", "yourshinyhostname", true);
client.send();
client.onreadystatechange = function() {
    
var resposne = client.getResponseHeader("X-Remote-User");
Shiny.onInputChange("getLogin", resposne);
}; }

然后,您可以获取 * X-Remote-User * 值,例如通过单击按钮:
ui.R

includeScript("www/js/getLogin.js"),
uiOutput("login_btn"),
verbatimTextOutput("text")

server.R

output$login_btn <- renderUI({
  
  HREF <- sprintf('
                  <button id="get_login_btn" value="test" onclick="requestLogin();" >
                  <font color="black">
                  <i class="fa fa-user"></i> Get login
                  </font> 
                  </button>
                  ')
HTML(HREF)
}) 

jsOutput <- reactive({
  input$getLogin
})

output$text <- renderPrint({ 
  jsOutput()
})
jhkqcmku

jhkqcmku2#

在server.R中添加一个对js函数的调用。这将在不点击按钮的情况下获取标题。例如:

output$text <- renderPrint({ 
  js$requestLogin()
  jsOutput()
})
cx6n0qe3

cx6n0qe33#

你可以用session$request来访问头变量,下面是一个改编自GitHub的交互式例子。

library(shiny)

server <- function(input, output, session) {
    
    output$summary <- renderText({
        ls(env=session$request)
    })
    
    output$headers <- renderUI({
        selectInput("header", "Header:", ls(env=session$request))
    })
    
    output$value <- renderText({
        if (nchar(input$header) < 1 || !exists(input$header, envir=session$request)){
            return("NULL");
        }
        return (get(input$header, envir=session$request));
    })
    
}

ui <- pageWithSidebar(
    headerPanel("Shiny Client Data"),
    sidebarPanel(
        uiOutput("headers")
    ),
    mainPanel(
        h3("Headers passed into Shiny"),
        verbatimTextOutput("summary"),
        h3("Value of specified header"),
        verbatimTextOutput("value")
    )
)

shinyApp(ui, server)

相关问题