Angularjs ui路由器阻止对非状态路由的访问

Angularjs ui路由器阻止对非状态路由的访问,angularjs,web,angular-ui,angular-ui-router,Angularjs,Web,Angular Ui,Angular Ui Router,我在制作一个有角度的站点时使用ui路由器,但无法让它允许路由到我的服务器。我在我的服务器上有facebook oauth身份验证,在那里我导航到/auth/facebook,服务器将重定向到fb,拦截回调并将客户端重定向回主页 在浏览器中导航到/auth/facebookurl时,它工作正常,但ui路由器监视位置并截获我所有的位置更改 你知道如何让url请求绕过$urlRouterProvider。否则(…)语句来允许路由到我的api服务器吗?我已尝试使用路由器提供商添加路由重定向,但它不会触发

我在制作一个有角度的站点时使用ui路由器,但无法让它允许路由到我的服务器。我在我的服务器上有facebook oauth身份验证,在那里我导航到
/auth/facebook
,服务器将重定向到fb,拦截回调并将客户端重定向回主页

在浏览器中导航到
/auth/facebook
url时,它工作正常,但ui路由器监视位置并截获我所有的位置更改


你知道如何让url请求绕过
$urlRouterProvider。否则(…)
语句来允许路由到我的api服务器吗?我已尝试使用路由器提供商添加路由重定向,但它不会触发远程呼叫。

多亏了:的同事,作为一种解决方法,您可以创建一个执行
window.location.assign('/auth/facebook')
的ng click处理程序来绕过路由器。

您可以通过以下方式在应用程序配置中处理此类请求:

第二种解决方案: 将
target=“\u self”
添加到您的链接,如下所示:

<a target="_self" ng-href="{{'/auth/'+provider}}">{{provider}}</a>


重复项:

两种情况下的完整url是什么。这是一个本地url,所以现在我在开发服务器上,所以其“ui路由器状态”的形式为“”。另外,如果我只是禁用html5模式,效果也不错。是的,html5模式将是我的下一个问题。Angular删除散列爆炸,将
index.html#/about/facebook
转换为
/about/facebook
。如果您希望保留它,您可以使用服务器端访问做一些事情,比如htaccess。否则,可能是angulars onroutechange事件?是的,我可能只是选择html5模式,但我觉得应该有一种方法来强制从服务器加载特定的路由尝试将链接设置为完整的url,而不是短的
localhost:9000/auth/facebook
,而不是“/auth/facebook”。您的服务器仍然知道您是否正在请求index.htmlusing
ng click
对我不起作用,所以我只是在我的作用域上调用了一个函数,该函数名为
$window.location.assign('/auth/'+provider)
<a target="_self" ng-href="{{'/auth/'+provider}}">{{provider}}</a>