Angular JS 深层链接的工作原理

How Angular JS Deep linking works

使用 Angular 1.4

当我尝试在 url 栏中输入以下 url 时,

https://application.com/movies/index.html?cd=1501739429812#/Movies/Action/2

发送到服务器的第一个请求包含 url(“网络”选项卡 Chrome)

https://application.com/movies/index.html?cd=1501739429812

仅,但应用程序仍会加载请求的页面。

如何通过 #/Movies/Action/2 加载正确的路线。

从浏览器发送到服务器的第一个请求:

Request URL: https://application.com/movies/index.html?cd=1501739429812
Request Method:GET
Status Code:200 OK
Referrer Policy:no-referrer-when-downgrade
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive

hashbang 内容未通过。

如有任何帮助,我们将不胜感激。提前谢谢你。

您将在 AngularJS 路由配置中找到答案。哈希内容永远不会传递到服务器,这就是为什么许多开发人员在 AngularJS 路由中打开 HTML5 模式时遇到问题的原因。

如果您观察返回内容的响应,您会发现它也没有 /Movies/Action/2 的详细信息。

但它确实有 bootstrap AngularJS 的脚本及其路由。因此,一旦您的页面加载到浏览器中,AngularJS 和路由机制就会介入。他们会观察您的浏览器 URL 的哈希内容,并采取相应的行动(加载 /Movies/Action/2例)。