You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript条件URL重定向问题:Shiny App HTTP转HTTPS失效排查

问题原因与解决办法

你的问题核心是对location.protocol的返回值格式理解有误:这个JavaScript属性返回的协议字符串自带冒号后缀,比如HTTP协议返回"http:",HTTPS协议返回"https:",而非你尝试的"http"或"http://"。

之前代码的问题分析

  1. 最初的代码用了单等号=,这是赋值操作而非比较。protocol = "http"会把字符串"http"赋值给protocol,这个表达式的返回值就是"http"(非空字符串属于真值),所以if条件永远成立,每次都会触发重定向。
  2. 改成双等号==后,你用"http"去和实际返回的"http:"比较,两者不相等,条件自然永远为false,不会触发重定向。

正确的重定向代码

替换成下面的代码就能正常工作:

var protocol = location.protocol;
if (protocol === "http:") {
  window.location.replace("https://shinyapps.io/myapp");
}
  • 用===做严格相等判断,避免类型隐式转换的意外问题
  • 用window.location.replace()替代assign(),这样重定向后浏览器历史记录不会保留原HTTP页面的入口,用户点击回退按钮不会回到无法使用地理定位的HTTP页面,体验更合理。

额外注意事项

  • 测试前强制刷新浏览器(Ctrl+F5),避免缓存旧的JavaScript代码导致测试结果不准
  • 如果后续你的自定义域名mydomain配置了HTTPS,请记得移除这段重定向代码,否则会出现不必要的跳转

内容的提问来源于stack exchange,提问作者DCTN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:15:20