我正在开展项目,我们正在使用Google OAuth API注册并登录用户以使用该应用程序。
该项目基于angularjs和asp.net。
当未启用html5mode时,登录过程正常,但出于SEO原因,我们需要使用以下命令从URL中删除散列(#):
$locationProvider.html5Mode(true);
在这种情况下,身份验证后收到的响应始终采用
格式http://site/#access_token=...
对于我们正在使用的角度的路线配置
$routeProvider.when('/access_token=:accessToken', {
templateUrl: '/app/identification/identification.html',
controller: 'identificationGoogle'
});
问题是当启用html5模式时,重定向完成后,即使浏览器窗口网址是以前的形式,也不会激活关联的控制器。
在刷新页面之前它不起作用。
对于这个问题有任何解决方案,以避免重新加载页面。
使用的角度版本是:1.3.15。
答案 0 :(得分:0)
我找到了解决方案。
解决方案是添加使用html5模式时角度所需的基本标记
Example: x = HILLARY, y = HILARI(query term)
Qgrams
$$HILLARY$$ -> $$H, $HI, HIL, ILL, LLA, LAR, ARY, RY$, Y$$
$$HILARI$$ -> $$H, $HI, HIL, ILA, LAR, ARI, RI$, I$$
number of q-grams in common = 4
并将Google开发者控制台上的密钥配置中的redirect_uri更改为
<base href="/">
而不是
http://site/
问题发生了,因为重定向网址与基本网址不同。
所以当对旧网址进行重定向时,后来与基本网址不匹配,因此angular的路由无法正常工作。 在这种情况下,浏览器会自动重定向到
http://site/index.cshtml
所以在显式重新加载页面后,基本网址和加载的网址在这种情况下匹配,因此路由工作正常。