遇到此问题的背景:项目需要实现单点登录,在前后端分离的前提下,前台如何保存token值成为了一个问题。想到的解决方案是,将token值统一存到一个前端程序,其他的前端程序去这个前端程序去取token(其他更好的解决方案欢迎指导~~)。在项目用angular的情况下,选择了以下插件:angular-cross-storage,此插件可以实现跨域存取localStorage,操作非常简单,都有demo。
通常情况下,设置HTTP的authorization只需在congfig中进行如下配置:
var app = angular.module("myApp",[]);app.config(function($httpProvider) {
$httpProvider.defaults.headers.common["Authorization"] = 所需带的权限;
});但是在此处,权限值是存在另一个前端程序的token值,获取权限token值是异步请求,并不能确定在何时能完成,说不定还没得到token值,页面已经发出了http请求,而这个没设置Authorization的请求,势必会返回401。
So 先要设置一个拦截器,并在拦截器里设置请求头,代码如下:

