问题标签 [angular-http-interceptors]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - 如何在 Angular Resource 中设置默认标头值?
以下方法不起作用:
控制台显示正确的数据,但它们没有被发送..
这是相关控制器中某处的部分(摘录):
我收到“消息:令牌无效”,我在 firebug 中看到了 request-http-headers,它们没有设置。
javascript - 如何在 Angular.js 中自己定义的服务上获得拦截器的响应?
我有一个带有服务 ( EqService
) 的 Angular 应用程序,我想知道异步调用中的时间戳标记。
我正在使用请求和响应拦截器。关键组件如下:
// 应用程序.js
//拦截器.js
// 服务.js
我的问题是:我怎样才能在EqService 接听电话后获得'config.responseTimestamp
' 和?'config.requestTimestamp'
javascript - Authentication - $http's .then() success callback called instead of error callback
This may just come from a misunderstanding of how to best do authentication in a MEAN stack app, or my lack of knowledge in how promises and $http's .then()
method works, but whenever I try to authenticate to my backend Node server with incorrect credentials, it is calling the success callback of $http's .then()
method instead of the error callback. Here's my setup:
I'm using the jsonwebtoken
and express-jwt
packages, AngularJS interceptors to add the token the to request and check for status 401 responseErrors, a TokenService that sets/removes, etc JWTs, and a UserService to handle login, logout, etc.
From debugging, here's what's happening:
- Request to login is sent out
- Server catches request, looks for specified user and can't find them in database. Returns 401 error with JSON object including error message, etc.
- HttpInterceptor engages the
responseError
method, correctly sees it's a status 401, removes any possible existing token, redirects to/login
screen, andreturn
s$q.reject(response)
. UserService.login()
correctly uses the error callback and does areturn response
.- Problem - the success callback in my login.js
.login()
method runs, instead of the second, error callback one. I have a feeling this has to do with what is discussed in this article about promise chaining, but my expertise has its limit right here and I can't quite understand what I should be doing next to tell the next callback in the chain that the previous one had an error...
Here's my setup:
Express:
authRoutes.js
From debugging, when I log in with incorrect credentials, it's correctly hitting the res.status(401).send(...)
line, so this part seems to be okay.
Angular:
app.js (includes HttpInterceptor)
userService.js
login.js (Where the problem seems to manifest itself)
That last part, UserService.login(user).then(function (response) { $location.path("/todo");
is the line that is running and trying to redirect the user to the list of Todo items, when I want it to run that console.log("There was a problem: " + response);
line instead...
Like I said above, I have a feeling it has to do with chaining promises and how errors are handled partway through the chain instead of bubbling down through the chain. Not sure if I need to add a .catch()
block like the site I mentioned above says to do. And even if that is the answer, I'm not entirely sure how to write that.
If there is a better way I should be organizing this, I'm definitely open to suggestions as well. I have to teach this to a class of students and want to make sure I'm teaching good practices.
Thanks in advance for the help!
angularjs - 使用 angular.js 拦截器重新加载页面后再次发送身份验证令牌
我正在尝试按照这种方法使用 AngularJS 和 NodeJS 的基于令牌的身份验证来创建登录服务
使用 Angular 拦截器,我能够在每个标头请求中发送保存在本地存储中的身份验证令牌,但是当我重新加载页面时,令牌不会发送到服务器并将我重定向到登录页面,因为请求没有有令牌
如何解决重新加载页面问题?
这是我的角度代码
angularjs - JWT 令牌失效的未知原因
我的 laravel-Angular 应用程序遇到了非常奇怪的问题。我正在使用 Tymon JWT 在我的每个请求上刷新令牌。我正在使用Satellizer
库来处理这些 JWT 令牌,但是,Satellizer
似乎没有响应拦截器来捕获新令牌。因此,我编写了自己的拦截器来这样做。
此代码基本上捕获新令牌并用新令牌替换本地存储中的现有令牌。
我的测试流程是:
注销后我收到一个错误Invalid token
(这并不总是发生。有时流程成功,有时失败)。此流程通过 REST 客户端邮递员完美运行。所以我认为我的 API 没有任何问题
附加图像显示正在传递的新令牌,在我whoami
调用后刷新后。
注销后,我正在清除本地存储。谁能告诉我这可能是什么原因?
编辑
javascript - 为什么配置文件中有请求时拦截器工厂失败?
我有下一个配置(index.js)来调用我的拦截器工厂。
我的文件夹和文件顺序:
当我从 './factory-inteceptor.js' 调用我的“InterceptorFactory”函数时,我的控制台出现下一个错误:
angularjs - $http 拦截器为每个请求记录多次
我正在制作一个角度应用程序,并且我添加了一个自定义 $http 拦截器用于身份验证和日志记录。
最近,我注意到我的拦截器工厂记录了每个请求 4 次,也记录了每个响应 4 次。
我添加了一个片段来复制它,并且该片段只会为每个请求记录一次。
javascript - 在触发循环依赖的拦截器中使用“$mdToast”
问题:
如何$mdToast
在不触发错误的情况下在拦截器中使用?
设置:
拦截器定义:
拦截器配置:
问题:
当我加载应用程序时,它会触发以下错误:
未捕获的错误:[$injector:cdep] 找到循环依赖项:$http <- $templateRequest <- $$animateQueue <- $animate <- $$interimElement <- $mdToast <- HttpError500Interceptor <- $http <- $templateFactory <- $view <- $状态
angularjs - http拦截器在angularjs中检测应用程序是否在线/离线(已连接到api)
我正在寻找一个很好的解决方案来检测我的应用程序中的在线/离线状态。navigator.onLine apprache 不起作用,至少对于当前版本的 chrome,我认为不可靠。应用程序位置和服务器端点可能不同,所以我真正想要的是检查服务器是否离线。我不介意用户是否可以使用 google.com。只要服务器在网络中并响应,该应用程序甚至可能在没有互联网的情况下工作。
我的方法是使用拦截器:
因此,对于每个发出的 http 请求,我都会检查响应。检测应用程序是否离线工作正常。棘手的是,检查应用程序是否再次在线。'响应',我缓存http请求。即使我处于离线状态,某些响应的状态也是 200,因为它们已被缓存。因此,在检查应用程序是否再次在线时,应忽略缓存的请求或获取模板。