在 Shiny 中获取响应头变量

Posted

技术标签:

【中文标题】在 Shiny 中获取响应头变量【英文标题】:get response header variable in Shiny 【发布时间】:2017-07-15 12:56:21 【问题描述】:

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

但我不知道如何在 Shiny 应用程序中获取它。有任何想法吗?也许解决方案可能是一些 java 脚本?

【问题讨论】:

【参考方案1】:

好的,我解决了。首先包含在ui.Rjs函数中:

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()
)

【讨论】:

有没有办法做同样的事情,但不需要用户点击? @wdkrnls 你可以试试gist.github.com/Tazovsky/3e1b68a7fe14dc242b4a85549b2575f2 这样的东西,但我不确定它是否会起作用。 谢谢,但到目前为止还没有运气。我什至尝试添加一个 Shiny.setInputValue("getUsername", response);没有成功。 @Taz: 什么是 'www/js/getLogin.js' ?我应该写一个单独的js文件吗? @maniA 是以function requestLogin() ...开头的JS脚本【参考方案2】:

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

output$text <- renderPrint( 
  js$requestLogin()
  jsOutput()
)

【讨论】:

以上是关于在 Shiny 中获取响应头变量的主要内容,如果未能解决你的问题,请参考以下文章

“response”对象设置响应头属性方法是啥?

如何从 Axios 获取请求中获取响应头参数?

从 axios 的响应头中获取数据

Http消息头中常用的请求头和响应头

如何使用 capybara-webkit 获取响应头和时间

LoadRunner获取WEB请求头信息的方法:REQUESTRESPONSE(引)