之后,我添加了一个登录链接到我的页面,< a href =“https://github.com/login/oauth/authorize?client_id=CLIENT_ID\u0026amp;scope=user\u0026amp;redirect_uri=http://localhost :8000 / login / callback“>登录< / a>,以及
$routeProvider.when('/login/callback',{ controller: 'loginCtrl' });
它成功返回了一个代码,其中包含如下链接:http:// localhost:8000 / login / callback?code = cd07ff3b70f5d1d1b8a2.但angularjs无法正确响应.
Error response Error code 404. Message: File not found. Error code explanation: 404 = Nothing matches the given URI.
我也尝试将redirect_url设置为http:// localhost:8000 /#/ login / callback,但是返回链接就像这样http:// localhost:8000 /?code = 61e9c8b73c073a0bccc0 /#/ login / callback
我需要将代码显示在url的末尾,而不是在中间,以便我可以使用$location.search().代码来获取我的代码.我该如何正确设置?
喜欢改变我的redirect_uri或改变我的路由器?
解决方法
如果你没有将html5Mode设置为true,那么将在URL上#,如果你重新加载页面,#将跟踪信息到$scope以使用htmlHistory api,这样应用程序即使在页面刷新.
但是一旦你将html5Mode设置为true,那么就没有#存储任何$scope信息,当页面重新加载时,angular无法找到相应的范围,因此返回404.
您可以查看$location section on angularjs guide,它有一节解释为什么会发生这种情况.
Page reload navigation
The $location service allows you to change only the URL; it does not allow you to reload the page. When you need to change the URL and reload the page or navigate to a different page,please use a lower level API,$window.location.href.