Angular JS Deep链接的工作原理

时间:2017-08-03 06:48:33

标签: javascript angularjs deep-linking

使用Angular 1.4

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

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

发送到服务器的第一个请求包含网址(网络标签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内容。

enter image description here

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

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