Setting headers and page redirection using angular
我正在开发一个登录应用程序,我在其中与REST接口进行角度通信以验证用户。 我是这个任务的$ http。 现在,我需要将我的页面重定向到另一个URL(这可能在相同或不同的域上)。 另外,我需要在此过程中设置标题。
请帮我完成一项实施,以便继续执行此任务。
1)AngularJs旨在构建SPA,您不应该重定向到另一个URL。您应该重定向到当前页面中的另一个路径。如果您使用角度路由器,您将重定向到另一个状态。请查看此信息以获取更多信息:单页面应用程序与登录页面的深层链接
2)因为浏览器自动处理302响应并强制你的ajax函数向Location发送另一个ajax请求以检索状态为200的最终结果。当用户未被授权时,你的服务器应返回401。无法在ajax中处理302重定向,为什么?
客户端侧的示例代码,用于处理401状态代码(未授权):
1 2 3 4 5 | $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error){ if (error.status == 401) { // check for 401 status code $state.transitionTo("login", { returnUrl: $location.url() }); } }) |
另一个带有$ http的示例代码,我建议在拦截器内全局执行
1 2 3 4 5 6 7 8 9 10 | $httpProvider.interceptors.push(function($q, $location) { return { 'responseError': function(response) { if(response.status === 404){ $location.path('your redirection path'); } return $q.reject(response); } }; }); |
3)为了设置您的请求标头,您可以在$ httpProvider.defaults.headers或每个请求中全局设置它
您是否考虑过阅读Angular文档/ API?
使用$ location服务进行重定向并阅读$ http文档以了解如何设置标头。
引用:
the $http service will automatically add certain HTTP headers to all requests. These defaults can be fully configured by accessing the $httpProvider.defaults.headers configuration object [...]
SO社区中的任何人都不太可能提供您问题的完整指南,因为所需信息很容易获取。
如果您需要转到另一个页面,请使用直接的java脚本