Asp.net 角度Google OAuth重定向无法在启用HTML5模式的情况下工作

Asp.net 角度Google OAuth重定向无法在启用HTML5模式的情况下工作,asp.net,angularjs,html,Asp.net,Angularjs,Html,我正在做一个项目,在这个项目中,我们使用GoogleOAuthAPI来注册和登录用户的应用程序 该项目基于angularjs和asp.net 未启用HTML5模式时,登录过程可以正常工作,但出于SEO原因,我们需要使用以下方法从url中删除哈希(#): $locationProvider.html5Mode(true); 在这种情况下,身份验证后收到的响应始终为 http://site/#access_token=... 对于我们正在使用的angular中的路由配置 $routeProvid

我正在做一个项目,在这个项目中,我们使用GoogleOAuthAPI来注册和登录用户的应用程序

该项目基于angularjs和asp.net

未启用HTML5模式时,登录过程可以正常工作,但出于SEO原因,我们需要使用以下方法从url中删除哈希(#):

$locationProvider.html5Mode(true);
在这种情况下,身份验证后收到的响应始终为

http://site/#access_token=...
对于我们正在使用的angular中的路由配置

$routeProvider.when('/access_token=:accessToken', {
      templateUrl: '/app/identification/identification.html',
      controller: 'identificationGoogle'
});
问题是,当启用html5模式时,在重定向完成后,关联的控制器永远不会激活,即使浏览器窗口url是以前的形式

在刷新页面之前,它不会工作

那么有没有解决这个问题的方法来避免重新加载页面的需要呢

使用的角度版本是:1.3.15。

我找到了解决方案

解决方案是添加基本标记,这是使用html5模式时angular所需的

<base href="/">
而不是

http://site/index.cshtml
发生此问题的原因是重定向url与基本url不同

因此,当重定向到旧url时,该url随后与基本url不匹配,因此angular的路由不起作用。 在这种情况下,浏览器将自动重定向到

http://site/#access_token=...

因此,在显式重新加载页面后,在这种情况下,基本url和加载的url是匹配的,因此路由工作正常。

我认为您需要从响应url中删除
标记,因为angular
HTML5模式
不适用于
标记url的系统。我知道,在使用刷新按钮重新加载页面后,angular识别哈希并自动删除它,因此url变为(/access\u token…),但由于某些原因,它在重定向后不会
http://site/#access_token=...