角度$location.如果用户提交带有hashbang的URL,如何在html5Mode(true)中解析查询字符串

Angular $location. How could be parsed a query string in html5Mode(true) if user submit an URL with hashbang?

本文关键字:true html5Mode 字符串 查询 用户 如果 location 提交 URL hashbang 角度      更新时间:2023-09-26

我正在开发一个搜索页面,并要求将所有选定的筛选器和其他状态存储在URL中,以便用户可以共享他们的工作结果。

我使用angular$location.search()来更新和解析URL。位置提供商设置如下:

$locationProvider.html5Mode(true).hashPrefix('!');

当传统浏览器的用户与现代浏览器的用户共享带有hashbang的链接时,问题就开始了。在这种情况下,$location.search()将不返回任何内容。

据我所知,原因是在"#"启动$location.hash()而不是$location.search()之后的html5模式中。但是hashPrefix('!')的目标是什么?我认为它应该解决这样的问题。。。

如果用户提交了带有hashbang的URL,我如何在html5Mode(true)中解析查询字符串?

好吧,如果您将html5Mode设置为true,它将处理Angular中的所有路由,但它不会反映服务器如何路由到您的应用程序。你现在可能已经为hashbangs设置了路由,但如果你也在服务器上提供了没有路由的路由呢?

据我所知,如果您将html5Mode设置为true,而传统浏览器不支持它,它将自动回退到哈希标记路由。如果有人捕获了该URL,然后与朋友共享,并且您的服务器上有支持,可以在任何一种情况下正确地将查询、路由和深度链接转换到您的Angular应用程序,那么您似乎都会受到保护。