加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS HTML5模式降级到全页重新加载代替hashbang

发布时间:2020-12-17 08:23:20 所属栏目:安全 来源:网络整理
导读:通过在AngularJS中启用HTML5模式,$ location服务将重写URL以从其中删除hashbang。这是一个很好的功能,将帮助我的应用程序,但是它的回退到hashbang模式有一个问题。我的服务需要身份验证,我被迫使用我的应用程序的外部身份验证机制。如果用户尝试使用其中
通过在AngularJS中启用HTML5模式,$ location服务将重写URL以从其中删除hashbang。这是一个很好的功能,将帮助我的应用程序,但是它的回退到hashbang模式有一个问题。我的服务需要身份验证,我被迫使用我的应用程序的外部身份验证机制。如果用户尝试使用其中的hashbang来访问我的应用程序的URL,那么它将首先将它们重定向到身份验证页面(除非成功通过身份验证,否则不会触摸我的服务),然后将其重定向到我的应用程序。由于哈希标签只能从客户端看到,所以当它们到达我的服务器时,它将丢弃任何路由的部分。一旦他们被认证,他们可能会重新输入URL,它将工作,但它的一个初始时间将导致用户体验的中断。

我的问题是,有没有办法从$ location.html5Mode(true)到不支持浏览器的全页重新载入的回退,在AngularJS中跳过完全路由的hashbang方法?

对我正在瞄准的可用实现的最佳比较将是浏览github.com上的文件夹。如果浏览器支持在不启动页面刷新的情况下重写URL,则该页面将异步加载必要的部件。如果浏览器不支持它,当用户点击文件夹时,会发生全页刷新。这可以用AngularJS来代替使用hashbang模式吗?

不要覆盖核心功能。

使用Modernizr,进行特征检测,然后进行相应的处理。

检查历史API支持

if (Modernizr.history) {
  // history management works!
} else {
  // no history support :(
  // fall back to a scripted solution like History.js
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读