通过在 AngularJS 中启用 HTML5 模式,$location
服务将重写 URL 以从中删除 hashbang。这是一个很棒的功能,可以帮助我处理我的应用程序,但是它回退到 hashbang 模式存在问题。我的服务需要身份验证,我被迫从我的应用程序中使用外部身份验证机制。如果用户尝试访问带有 hashbang 的应用程序的 URL,它将首先将他们重定向到身份验证页面(除非成功通过身份验证,否则永远不会接触我的服务),然后将他们重定向回我的应用程序。由于哈希标签只能从客户端看到,所以当它们到达我的服务器时,它会丢弃路由的任何部分。一旦他们通过身份验证,他们可能会重新输入 URL 并且它会起作用,但它是第一次会导致用户体验中断。
那么我的问题是,有没有什么办法可以从不$location.html5Mode(true)
支持的浏览器的全页面重新加载的回退,跳过完全在 AngularJS 中路由的 hashbang 方法?
我的目标可用实现的最佳比较是诸如浏览 github.com 上的文件夹之类的东西。如果浏览器支持在不启动页面刷新的情况下重写 URL,则页面将异步加载必要的部分。如果浏览器不支持,当用户点击文件夹时,会发生整页刷新。这可以用 AngularJS 代替使用 hashbang 模式来实现吗?