问题标签 [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.

0 投票
1 回答
2747 浏览

angularjs - 如何在 Angular Resource 中设置默认标头值?

以下方法不起作用:

控制台显示正确的数据,但它们没有被发送..

这是相关控制器中某处的部分(摘录):

我收到“消息:令牌无效”,我在 firebug 中看到了 request-http-headers,它们没有设置。

0 投票
2 回答
504 浏览

javascript - 如何在 Angular.js 中自己定义的服务上获得拦截器的响应?

我有一个带有服务 ( EqService) 的 Angular 应用程序,我想知道异步调用中的时间戳标记

我正在使用请求和响应拦截器。关键组件如下:

// 应用程序.js

//拦截器.js

// 服务.js

我的问题是:我怎样才能在EqService 接听电话后获得'config.responseTimestamp' 和?'config.requestTimestamp'

0 投票
2 回答
1587 浏览

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:

  1. Request to login is sent out
  2. Server catches request, looks for specified user and can't find them in database. Returns 401 error with JSON object including error message, etc.
  3. HttpInterceptor engages the responseError method, correctly sees it's a status 401, removes any possible existing token, redirects to /login screen, and returns $q.reject(response).
  4. UserService.login() correctly uses the error callback and does a return response.
  5. 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!

0 投票
0 回答
687 浏览

angularjs - 使用 angular.js 拦截器重新加载页面后再次发送身份验证令牌

我正在尝试按照这种方法使用 AngularJS 和 NodeJS 的基于令牌的身份验证来创建登录服务

使用 Angular 拦截器,我能够在每个标头请求中发送保存在本地存储中的身份验证令牌,但是当我重新加载页面时,令牌不会发送到服务器并将我重定向到登录页面,因为请求没有有令牌

如何解决重新加载页面问题?

这是我的角度代码

0 投票
1 回答
608 浏览

angularjs - JWT 令牌失效的未知原因

我的 laravel-Angular 应用程序遇到了非常奇怪的问题。我正在使用 Tymon JWT 在我的每个请求上刷新令牌。我正在使用Satellizer库来处理这些 JWT 令牌,但是,Satellizer似乎没有响应拦截器来捕获新令牌。因此,我编写了自己的拦截器来这样做。

此代码基本上捕获新令牌并用新令牌替换本地存储中的现有令牌。

我的测试流程是:

注销后我收到一个错误Invalid token这并不总是发生。有时流程成功,有时失败)。此流程通过 REST 客户端邮递员完美运行。所以我认为我的 API 没有任何问题

附加图像显示正在传递的新令牌,在我whoami调用后刷新后。

在此处输入图像描述

在此处输入图像描述

注销后,我正在清除本地存储。谁能告诉我这可能是什么原因?

编辑

0 投票
2 回答
81 浏览

javascript - 为什么配置文件中有请求时拦截器工厂失败?

我有下一个配置(index.js)来调用我的拦截器工厂。

我的文件夹和文件顺序:

当我从 './factory-inteceptor.js' 调用我的“InterceptorFactory”函数时,我的控制台出现下一个错误:

0 投票
0 回答
244 浏览

angularjs - $http 拦截器为每个请求记录多次

我正在制作一个角度应用程序,并且我添加了一个自定义 $http 拦截器用于身份验证和日志记录。

最近,我注意到我的拦截器工厂记录了每个请求 4 次,也记录了每个响应 4 次。

我添加了一个片段来复制它,并且该片段只会为每个请求记录一次。

0 投票
3 回答
967 浏览

javascript - 在触发循环依赖的拦截器中使用“$mdToast”

问题:

如何$mdToast在不触发错误的情况下在拦截器中使用?

设置:

拦截器定义:

拦截器配置:

问题:

当我加载应用程序时,它会触发以下错误:

未捕获的错误:[$injector:cdep] 找到循环依赖项:$http <- $templateRequest <- $$animateQueue <- $animate <- $$interimElement <- $mdToast <- HttpError500Interceptor <- $http <- $templateFactory <- $view <- $状态

0 投票
1 回答
68 浏览

angularjs - Angular v1.4.9 $badreq 错误,在拦截器可以添加 url 之前失败

在补丁 v1.4.9中,当调用没有参数时,Angular 添加了一个$badreq错误,但在我的代码中,如果没有设置 url,它会添加到 my 中并指向 my .$httpurlinterceptorapi

因为它现在在到达interceptor我的应用程序之前失败了,所以我的应用程序完全被破坏了。

有没有办法跳过检查或进入interceptor检查前?


从补丁说明:

$http:如果传递的 url 不是字符串则抛出 ( c5bf9dae , #12925 , #13444 )

0 投票
0 回答
1088 浏览

angularjs - http拦截器在angularjs中检测应用程序是否在线/离线(已连接到api)

我正在寻找一个很好的解决方案来检测我的应用程序中的在线/离线状态。navigator.onLine apprache 不起作用,至少对于当前版本的 chrome,我认为不可靠。应用程序位置和服务器端点可能不同,所以我真正想要的是检查服务器是否离线。我不介意用户是否可以使用 google.com。只要服务器在网络中并响应,该应用程序甚至可能在没有互联网的情况下工作。

我的方法是使用拦截器:

因此,对于每个发出的 http 请求,我都会检查响应。检测应用程序是否离线工作正常。棘手的是,检查应用程序是否再次在线。'响应',我缓存http请求。即使我处于离线状态,某些响应的状态也是 200,因为它们已被缓存。因此,在检查应用程序是否再次在线时,应忽略缓存的请求或获取模板。