123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // config
- var app =
- angular.module('app')
- .factory('MyInterceptor', ["$q", "toaster", "$timeout", function ($q, toaster, $timeout) {
- return {
- // 可选,拦截成功的请求
- request: function (config) {
- if (config.url.endsWith(".html") || config.url.endsWith(".js") || config.url.endsWith(".css") || config.cache) {
- //有后缀名或是缓存属性的一般都是静态文件,不是数据接口
- }else{
- if (location.host.includes("127.0.0.1") || location.host.includes('localhost') || location.host.indexOf("192.168.") > -1) {
- config.url = "/mock" + config.url;
- } else {
- config.url = "" + config.url;
- }
- }
- // 进行预处理
- // ...
- return config || $q.when(config);
- },
- // 可选,拦截失败的请求
- requestError: function (rejection) {
- // 对失败的请求进行处理
- toaster.pop("error", "提示", "请求失败,请检查广告屏蔽软件等插件或更换浏览器重试!");
- return $q.reject(rejection);
- },
- // 可选,拦截成功的响应
- response: function (response) {
- if (response.status == 401) {
- location.href = "#!access/signin";
- return response;
- }
- var config = response.config;
- if (config.url.endsWith(".html") || config.url.endsWith(".js") || config.url.endsWith(".css") || config.cache) {
- //有后缀名或是缓存属性的一般都是静态文件,不是数据接口
- } else {
- var dataObj = response.data;
- if (dataObj && angular.isObject(dataObj)) {
- //后台可能传data、para、payload,三者兼容
- if (dataObj.payload) {
- dataObj.para = dataObj.payload;
- dataObj.data = dataObj.payload;
- }
- //错误码提示
- if (dataObj.result == 0) {
- toaster.pop("error", "提示", dataObj.description)
- }
- }
- }
- // 进行预处理
- // ....
- return response || $q.when(reponse);
- },
- // 可选,拦截失败的响应
- responseError: function (rejection) {
- if (rejection.status == 401) {
- var mask = new Mask("登录过期,即将进入登录页面");
- mask.show(true);
- $timeout(function () {
- mask.remove();
- location.href = "#!access/signin";
- }, 2000);
- return $q.reject(rejection);
- }
- return $q.reject(rejection);
- }
- };
- }])
- .config(
- ['$controllerProvider', '$compileProvider', '$filterProvider', '$provide', '$httpProvider',
- function ($controllerProvider, $compileProvider, $filterProvider, $provide, $httpProvider) {
- //避免base64的图片渲染时出现"unsafe:data"前缀
- $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file):/);
- // lazy controller, directive and service
- app.controller = $controllerProvider.register;
- app.directive = $compileProvider.directive;
- app.filter = $filterProvider.register;
- app.factory = $provide.factory;
- app.service = $provide.service;
- app.constant = $provide.constant;
- app.value = $provide.value;
- //注入拦截器
- $httpProvider.interceptors.push('MyInterceptor');
- }
- ])
|