angularJS中的拦截器

angularJs HTTP响应拦截器 为何要用拦截器? 任何时候,如果我们想要为请求添加全局功能,例如身份认证、错误处理等,在请求发送给服务器之前或服务器返回时对其进行拦截,是比较好的实现手段。  angularJs通过拦截器提供了一个从全局层面进行处理的途径.   拦截器允许你: 通过实现 request 方法拦截请求: 该方法会在 $http 发送请求道后台之前执行,因此你可以修改配置或做其他的操作。该 阅读详情

这里我将的拦截器,是关于前端项目的请求的拦截器,基于angularJS中的httpProvider的。

有没有这样一种场景,在使用ajax请求的时候,服务端需要验证header中的token和cookie,所以每次请求的时候都需要加上这个token,cookie不用加,每次请求的时候浏览器都会帮你带上,所以你就需要在有ajax的地方都添加一段向header中写token的代码,是不是觉得挺闹心的?

别怕,我来帮你解决这个问题。

在angularJS官方api中$http处有这么一段话:

For purposes of global error handling, authentication, or any kind of synchronous or asynchronous pre-processing of request or postprocessing of responses, it is desirable to be able to intercept requests before they are handed to the server and responses before they are handed over to the application code that initiated these requests. The interceptors leverage the promise APIs to fulfill this need for both synchronous and asynchronous pre-processing.

The interceptors are service factories that are registered with the $httpProvider by adding them to the $httpProvider.interceptorsarray. The factory is called and injected with dependencies (if specified) and returns the interceptor.

这段话的意思就是通过使用promise对象(处理回调的一个非常使用的对象)和$httpProvider.interceoters这个数组,按照该数组的指定格式,就可以对请求的过程进行控制,数据的格式是这样的:

{
// optional method
'request': function(config) {
// do something on success
return config;
},
// optional method
'requestError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
},
 
// optional method
'response': function(response) {
// do something on success
return response;
},
// optional method
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}



相信一些小伙伴看了这个数据已经有些感觉了,因为angular 的$http是封装了ajax的,所以可以通过$httpProvider控制请求的过程。

附上我在程序中的代码加深理解:

var App = angular.module('app',[]);
App.factory('authInterceptor',['$q','authService','mAlert',function($q,authService,mAlert){
return {
'request':function(config){
var token = (authService.getToken());
config.headers['author'] = token;
return config ||$q.when(config);
},
'responseError' :function(resError) {
if(resError.status == 404){
mAlert.alert({
title:'系统提示',
body:'请求资源未找到'
})
}
return $q.reject(resError);
}
}
}])
.provider('authService',function(){
var token="zhumin",
self = this;
self.$get = function(){
return {
getToken:function(){
return token;
}
}
}
}).config(['$httpProvider',function($httpProvider){
$httpProvider.interceptors.push('authInterceptor')
}])


 mAlert是我自己封装的一个模态框,可以忽略。

factory返回了一个$httpProvider.interceptors数据规定的格式,用于当request之前为header添加token,reponseError用与服务端返回错误状态时的操作。provider相当于封装了一个类,用于factory中调用。

在config中将拦截器注入数据中,就可以实现在整个引用程序中的ajax请求的header中带上token,效果不错吧~

效果图如下:


Angularjs中的拦截器 $httpAngularJS 的 $http 服务允许我们通过发送 HTTP 请求方式与后台进行通信。在某些情况下,我们希望可以俘获所有的请求,并且在将其发送到服务端之前进行操作。还有一些情况是,我们希望俘获响应,并且在完 成完成调用之前处理它。一个很好例子就是处理全局 http 异常。拦截器(Interceptors)应运而生。本文将介绍 AngularJS 的拦截器,并且给几个有用的例子。 阅读详情

相关推荐

AngularJS中的拦截器实例详解

AngularJS中的拦截器实例详解 异步操作 有时候需要在拦截器中做一些异步操作。幸运的是, AngularJS 允许我们返回一个 promise 延后处理。它将会在请求拦截器中延迟发送请求或者在响应拦截器中推迟响应。 下面是项目中用到的代码。 ZbtjxcApp.factory('myHttpInterceptor', ['$q', '$window','$location', function($q, $window,$location) { return { // 全局响应 'response': function(response) { // 这里还

AngularJS 拦截器和应用例子(转)

$httpAngularJS 的 $http 服务允许我们通过发送 HTTP 请求方式与后台进行通信。在某些情况下,我们希望可以俘获所有的请求,并且在将其发送到服务端之前进行操作。还有一些情况是,我们希望俘获响应,并且在完成完成调用之前处理它。一个很好例子就是处理全局 http 异常。拦截器(Interceptors)应运而生。本文将介绍 AngularJS 的拦截器,并且给几个有用的例子。 什...

weixin_33910434的博客 252

AngularJS使用拦截器实现的loading功能完整实例

主要介绍了AngularJS使用拦截器实现的loading功能,结合完整实例形式分析了AngularJS拦截器的设置、调用及loading功能实现技巧,需要的朋友可以参考下

Angularjs拦截器

本篇文章参考自:https://my.oschina.net/ilivebox/blog/290881 前言: 今天在公司项目中碰到了拦截器这个东西,顾名思义,拦截器就是为了拦截某个东西,项目中的拦截器都是组长封装好的,自己也不懂,所以就问了问度娘,结合网上的讲解,在此总结一下 什么是拦截器? 顾名思义,拦截器就是为了拦截某一个东西~~~ $httpAngularJS 的 $http 服务允...

weixin_43996999的博客 645

详解AngularJs HTTP响应拦截器实现登陆、权限校验

$httpAngularJS 的 $http 服务允许我们通过发送 HTTP 请求方式与后台进行通信。在某些情况下,我们希望可以俘获所有的请求,并且在将其发送到服务端之前进行操作。还有一些情况是,我们希望俘获响应,并且在完成完成调用之前处理它。一个很好例子就是处理全局 http 异常。拦截器(Interceptors)应运而生。本文将介绍 AngularJS 的拦截器,并且给几个有用的例子。 什么是拦截器? $httpProvider 中有一个 interceptors 数组,而所谓拦截器只是一个简单的注册到了该数组中的常规服务工厂。下面的例子告诉你怎么创建一个拦截器: <!-- lan

【全开源】旅行吧旅游门票预订系统源码(FastAdmin+ThinkPHP+Uniapp)

此外,系统还会根据我的旅行计划和喜好,为我推荐合适的景点和门票,让我的旅行更加丰富多彩。旅游门票预订系统的出现,不仅简化了门票预订的流程,还提高了旅行的便捷性和效率。一款基于FastAdmin+ThinkPHP+Uniapp开发的旅游门票预订系统,支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统,提供前后台无加密源码,支持私有化部署。如今,有了旅游门票预订系统,这些问题都能迎刃而解。智能推荐:系统还会根据你的旅行计划和喜好,为你推荐合适的景点和门票,让你的旅行更加丰富多彩。

2401_84413757的博客 1301

angular 详解HTTP拦截器 看这一篇就够了

HTTP拦截器 前面我们介绍了Angular 全家桶中 HTTP 部分的基础用法,能够满足开发中的基本需求。为了让我们的教程更贴近实战,拦截器是我们绕不过的话题。 拦截器可以用一种常规的、标准的方式对每一次 HTTP的请求/响应任务执行从认证到记日志等很多种隐式任务。 如果没有拦截机制,那么开发人员将不得不对每次 HttpClient调用显式实现这些任务。比如每次设置请求头中的 token。 编写拦截器 要实现拦截器,就要实现一个实现了 HttpInterceptor接口中的 intercept()方法

yanyi24的博客 5360

Discrete Optimization (Coursera) 学习笔记 Week 1 introduction (开个帖子)

Week 1 Introduction 这位教授Pascal Van Hentenryck 真的算是优化领域神级别的人物了吧?截一张Google scholar的图大家感受一下… 居然在Coursera上看到了他开的课:Discrete Optimization。试听了几节后,发现讲得很有激情,而且深入浅出。遂决定花暑假跟完这一门课。 这门课每周花两三个小时介绍基础概念,然后得花十几个小时写作业(coding)… 一开始以为Coursera上的课的作业应该不会太难,然后第一次作业(knapsack)我就被

ZJ_11701的博客 656

angularjs ajax拦截器,angularJS 1.0.x中所有HTTP请求的拦截器

小编典典官方文档中有一个很好的例子,适用于当前的稳定版1.2.0。angular.module('RequestInterceptor', []).config(function ($httpProvider) {$httpProvider.interceptors.push('requestInterceptor');}).factory('requestInterceptor', functi...

weixin_39950867的博客 279

从零到一:基于PX4+Gazebo+ROS2的无人机轨迹跟踪仿真环境全栈搭建

本文详细介绍了在Ubuntu 22.04系统上,从零开始搭建基于PX4、Gazebo Garden和ROS2 Humble的无人机轨迹跟踪仿真环境的完整流程。内容涵盖PX4 SITL编译、Gazebo安装、ROS2配置、Micro XRCE-DDS Agent通信桥接以及QGroundControl地面站部署,并提供了创建自定义ROS2节点实现圆形轨迹跟踪的实战代码与关键调试技巧,帮助开发者快速构建全栈仿真开发环境。

swift5iosmith的博客 911

四旋翼无人机控制算法实战:从PID到MPC的路径跟踪

本文深入探讨了四旋翼无人机控制算法的演进路径,从基础的PID控制到高级的MPC算法,详细解析了各类算法的原理、实现技巧及适用场景。通过实战案例对比分析,为开发者提供从算法选型到参数调优的全方位指导,助力提升无人机飞行控制的精度与稳定性。

weixin_29090917的博客 239

Angularjs的前端拦截器

最近项目中,要使用过滤器去做登陆拦截,接到要求的第一反应肯定是java的filter。简单方便,后来发现项目中很多请求用到的是ajax异步请求,在使用sendRedirect跳转的时候,根本跳出过去。因为服务器要控制页面跳转必须客户端提交请求,服务器接到请求后,将处理后的html返回至页面展示 AJAX是从服务端获取到内容后利用客户端脚本替换InnerHtml,这本质上是客户端的行为,所以Ajax

漫长学习路 7214

利用Dify构建文档内容的分析对比

本次主要做了一些workflow和Agent的应用实现,供大家参考。主要目的是为了进行两个内部报告文件的内容对比,特别是报告中的各类审批表、申请表、推荐表和流程对比,本地数据通过知识库方式分别加载到两个知识库中,编制工作流针对同一个问题进行知识库检索,之后将查询结果进行合并,再一起提交给LLM进行对比,最终将对比分析结果以markdown方式返回显示。主要包括如何构建知识库,如何设计workflow、如何将工作流发布为工具、如何设计提示词、如何在agent中引入前面发布的工具,最终通过agent实现与用户交

hhue2007的专栏 2522

AngularJS—拦截器和好棒的例子

$http AngularJS 的 $http 服务允许我们通过发送 HTTP 请求方式与后台进行通信。在某些情况下,我们希望可以俘获所有的请求,并且在将其发送到服务端之前进行操作。还有一些情况是,我们希望俘获响应,并且在完成完成调用之前处理它。一个很好例子就是处理全局 http 异常。拦截器(Interceptors)应运而生。本文将介绍 AngularJS 的拦截器,并且给几个有用的例子。 什么

此博客已停用,博文会逐渐转移到新地址,http://blog.youkuaiyun.com/liupeifeng3514 415

使用 Visual Studio Code 搭建 SAP UI5 本地开发环境

工欲善其事,必先利其器。时至今日,SAP 提供了非常多的 SAP UI5 开发工具,既包含本地搭建的,也包含浏览器里远端使用的工具,比如 WebIDE 和 Business Application Studio. 我们访问下面这个链接,就能找到所有这些工具的安装或者配置步骤: https://tools.hana.ondemand.com/#sapui5 如果想选择本地开发,SAP 推荐的工具是 Visual Studio Code,也就是本文要介绍的内容。 也可以下载 WebIDE 的本地安装包,将其安

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1万+

RK3588平台开发系列讲解(项目篇)常见模型结构

📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)等。

内核笔记 1756

使用AngularJS的拦截器

AngularJS设置拦截器 在日常的web开发工程中,我们通常会在后台创建拦截器或者过滤器进行一些统一的权限控制或者统一编码等操作。然而当我们将前后端完全分离...

不爱运动的跑者 312

2026软考中级-软件设计师笔记(送最新视频教程)

核心口诀:运控存输输(运算器、控制器、存储器、输入、输出)例题(2019年上半年):核心公式:数字签名流程:数字证书作用:死锁4个必要条件:死锁判断公式:处理策略:程序设计语言的四大核心成分:顺序表操作(时间复杂度):链表操作(时间复杂度):核心思想:频率高的字符用短编码,频率低的用长编码 → 最小化总编码长度构造步骤(贪心算法):前提:有序表(升序/降序) 步骤:时间复杂度:O(log₂n) 例:查找中核心思想:用哈希函数将关键字映射到存储位置 哈希冲突:不同关键字映射到同一位置 → 用链地址法或开放定址

36万+

AngularJS拦截器

AngularJS是通过拦截器提供了一个全局层面对响应进行处理的途径。拦截器实际是$http服务的基础中间件,用来向应用的业务流程中注入新的逻辑,其核心是服务工厂,通过向 $httpProvider.interceptors数组中添加服务工厂,在$httpProvider中进行注册。一共有四种,两种成功拦截器,两种失败拦截器。 第一步注册拦截器: angular.module('myApp'...

weixin_30343157的博客 125

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

angularjs ajax拦截器,在angularjs拦截器中停止请求

如何在Angularjs拦截器中停止请求.有什么办法吗?我尝试使用承诺并发送拒绝而不是解决!.factory('connectionInterceptor',['$q','$timeout',function($q,$timeout) {var connectionInterceptor = {request: function(config) {var q = $q.defer();$timeo...

weixin_42511712的博客 374

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

AngularJs HTTP响应拦截器实现登陆、权限校验

$httpAngularJS 的$http服务允许我们通过发送 HTTP 请求方式与后台进行通信。在某些情况下,我们希望可以俘获所有的请求,并且在将其发送到服务端之前进行操作。还有一些情况是,我们希望俘获响应,并且在完成完成调用之前处理它。一个很好例子就是处理全局 http 异常。拦截器(Interceptors)应运而生。本文将介绍AngularJS的拦截器,并且给几个有用的例...

230

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

AngularJS 拦截器

在需要进行身份验证时,在请求发送给服务器之前或者从服务器返回时对其进行拦截,是比较好的实现手段。 例如,对于身份验证,如果服务器返回401状态码,将用户重定向到登录页面。 AngularJS通过拦截器提供了一个从全局层面对响应进行处理的途径。 拦截器是$http服务的基础中间件,用来向应用的业务流程中注入新的逻辑。 一共有四种拦截器,两种成功,两种失败。 request Angul...

weixin_30699463的博客 187

Angularjs中的拦截器 使用笔记

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33904756的博客 87
上一篇: 转战gulp,实现前端静态资源的压缩,加MD5戳,替换引用,加CDN前缀
下一篇: 关于邮箱前端架构的一些思考
cczhumin
博客等级 码龄11年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值