部署在Shiny Server上的Shiny app嵌入iframe后无法显示
问题解决建议
1. iframe嵌入空白问题
Shiny Server默认配置了X-Frame-Options: SAMEORIGIN,限制跨域网站通过iframe嵌入内容,这是导致空白的核心原因,可通过两种方式修改:
- 修改Shiny Server全局配置
编辑配置文件(路径通常为/etc/shiny-server/shiny-server.conf),在server块或对应App的location块中添加头部设置:
保存后重启Shiny Server:# 允许指定域名嵌入 header_add X-Frame-Options "ALLOW-FROM https://你的网站域名"; # 若无需限制域名(不推荐生产环境),可改为 # header_add X-Frame-Options "ALLOWALL";sudo systemctl restart shiny-server - 在Shiny App代码中单独设置
在App的UI部分开头添加头部元信息:tags$head(tags$meta(httpEquiv = "X-Frame-Options", content = "ALLOW-FROM https://你的网站域名"))
2. RStudio Server Publish按钮无登录选项
自行搭建的Shiny Server不属于RStudio官方托管服务(如ShinyApps.io、RStudio Connect),因此Publish按钮不会提供对应登录入口。只需将App的代码文件复制到Shiny Server的默认托管目录(通常为/srv/shiny-server/),Shiny Server会自动加载并提供访问,无需通过Publish按钮发布。
内容的提问来源于stack exchange,提问作者Sam Hoppen
相关产品推荐
相关产品推荐

