问题标签 [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 投票
2 回答
5958 浏览

angularjs - Angularjs拦截器不起作用

我正在尝试创建一个$http如下所示的拦截器:

拦截器失败并出现以下错误:

0 投票
0 回答
258 浏览

angularjs - 不允许 http 请求中的 Elgg 标头

我正在使用 AngularJS 开发前端应用程序,我正在尝试登录 elgg 平台。如此处文档中所述,如果要使用 HMAC 身份验证,则必须添加一些自定义标头。在 AngularJS 中,我使用了拦截器。

但我得到的回应是:

XMLHttpRequest cannot load http://localhost/elgg-1.9.8/elgg-1.9.8/services/api/rest/xml/?method=auth.gettoken. Request header field X- Elgg-hmac-algo is not allowed by Access-Control-Allow-Headers.

我在本地主机上的网络服务器上有 apache,并且我已经配置:
<Directory /> Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Request-Headers "*" Header always set Access-Control-Request-Method "*" AllowOverride none Require all denied </Directory>

我还检查了响应标头,这是我得到的: HTTP/1.1 200 OK Date: Sat, 30 May 2015 13:37:07 GMT Server: Apache/2.4.10 (Unix) OpenSSL/1.0.1j PHP/5.6.3 mod_perl/2.0.8-dev Perl/v5.16.3 Access-Control-Allow-Origin: * Access-Control-Request-Headers: * Access-Control-Request-Method: * X-Powered-By: PHP/5.6.3 Cache-Control: no-cache, must-revalidate Expires: Fri, 05 Feb 1982 00:00:00 -0500 Vary: Accept-Encoding,User-Agent Content-Encoding: gzip Content-Length: 81 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8

我找不到错误在哪里。我在服务器上设置了标头响应,但我仍然在控制台上收到此错误。谢谢

0 投票
1 回答
4529 浏览

angularjs - 拦截器中的无限循环

我制作了一个使用 API 的 AngularJS 网站。此 API 提供了一些功能,例如身份验证 (Oauth)。

当 API 返回 401 错误时,表示access_token已经过期,需要用refresh_token.

我在 AngularJS 中创建了一个拦截器。它的目标是检查 API 返回的结果是否为 401 错误,如果是,则必须刷新令牌,然后处理先前被拒绝的请求。

问题是拦截器创建了一个无限循环。在初始请求第二次失败后,它应该停止但它没有。

所以这段代码:

  • 在第一个请求失败时开始
  • 刷新令牌
  • 重试请求但再次失败(<-我只想让它停在这里)
  • 刷新令牌
  • 重试请求但再次失败
  • 刷新令牌
  • 重试请求但再次失败
  • ETC...
0 投票
1 回答
130 浏览

javascript - Angular JS - My controller function its never return after execute my service script

The process to login a user on my app is working. It is connecting to a server and this is returned a 200 Status, so it's working fine. But after my service finish with its task, my controller is not executing its lines:

Controller:

Does anyone have an idea about how to resolve this? Maybe my interceptor is involved in this behavior. Here my scripts:

app.js

controller.js

service.js

0 投票
1 回答
1392 浏览

ajax - AngularJS 简单的身份验证拦截器

每次我发出请求时,我都想在标头中传递我的令牌。我现在的做法是使用:

我怎么能这样做才能将其发送到每个请求,并且当它抛出错误时它应该执行

0 投票
1 回答
740 浏览

angularjs - Angular 与 Typescript:HTTP 注入器工厂与服务

我创建了一个我想用作 HTTP 注入器的 Typescript 类(参见代码...)。它作为服务(而不是工厂)被添加到 Angular 模块中。我注意到了一些问题。

  1. 当类用大写字母定义“请求”和“响应”函数时,注入器不起作用(这些函数永远不会被调用)。当用小写字母定义时,它们被调用。
  2. 当函数被正确调用时,“this”对象指的是全局窗口而不是对象。

我通过创建真正的工厂(参见代码...)并将其作为工厂添加到 Angular 模块中解决了这个问题。

但是,我很想了解为什么会这样。有什么想法吗?

注意“请求”与“响应”。前者将被调用。后者不会。

0 投票
1 回答
2944 浏览

angularjs - 推送http拦截器时的循环依赖

我正在使用 http Interceptor 来拦截我的应用程序中的每个 http 请求。但我发现循环依赖:$http <- APIInterceptor <- $http <- $templateRequest <- $compile

这是我的服务代码:

并将其推为:

在配置函数中。我在这里做错了吗?即使我尝试使用手动注入 $http

$注射器

,但得到同样的错误。请帮助我。

0 投票
4 回答
5280 浏览

angularjs - Angular JS - add a custom header to all GET/POST requests

I'm trying to use an interceptor to add an 'Authorization' header to all my GET/POST requests. Here is the interceptor:

The interceptor is being used in the main module as follows in the myApp.config part:

For some reason I can't see the Authorization header in the network tab(I'm using Chrome) and it's not getting to the server and I don't get any errors. The GET/POST request in my application are to a remote server that is NOT in my domain.

Any idea what am I doing wrong here?

Solution: I found the problem, it was on the server side - apparently if I set the Access-Control-Allow-Headers in the response to * it doesn't work but if I specify the headers literally it works just fine.

0 投票
1 回答
108 浏览

angularjs - 角度拦截器不被拒绝

$resource调用一些 API。如果它返回一些标志,那么请求应该下降.catch()$resource('api/').get(...).$promise.catch();

我的拦截器不会触发那个调用。.then无论如何它都会调用

拦截器代码:

如何获得相同的响应,但在捕获部分没有检查每个请求中的错误?

0 投票
1 回答
590 浏览

javascript - 使用 Angular 服务的请求拦截器对 REST get 调用进行简单身份验证

我想传入对 api 进行 REST 调用所需的用户名和密码组合。

控制器.js

我目前在控制台中收到两个错误。首先是未授权访问的 401 状态和有关在请求的资源上找不到跨源标头的错误。我自己无法将 X 原始标头放在请求的资源上,因为我无权编辑 API 的响应。