在 Shiny 中获取响应 header 变量
get response header variable in Shiny
我的 apache 将 LDAP 登录传递给变量 X-Remote-User in header:
但我不知道如何在 Shiny 应用程序中获取它。有任何想法吗?也许解决方案可能是一些 java 脚本?
好的,我解决了。首先在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()
})
添加对server.R中js函数的调用。这将在不单击按钮的情况下获取 header。例如:
output$text <- renderPrint({
js$requestLogin()
jsOutput()
})
我的 apache 将 LDAP 登录传递给变量 X-Remote-User in header:
但我不知道如何在 Shiny 应用程序中获取它。有任何想法吗?也许解决方案可能是一些 java 脚本?
好的,我解决了。首先在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()
})
添加对server.R中js函数的调用。这将在不单击按钮的情况下获取 header。例如:
output$text <- renderPrint({
js$requestLogin()
jsOutput()
})