问题标签 [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 回答
240 浏览

angularjs - 如何在 AngularJS 中使用两个单独的 $http 服务实例?

我正在实现一个 angularjs 服务,它将$http调用发送的数据保存在localStorage. 为了做到这一点,我使用了请求拦截器,这样每当通过 发送 http 请求时$http,数据就会保存在localStorage. 下面是我的拦截器代码,

为了使上述拦截器正常工作,我必须将其注册interceptors$httpProvider. 我这样做是为了实现这一点,

问题

现在,当我OfflinkJS在另一个模块中使用模块时,所有$http调用都通过我的拦截器。但是我想让$http服务发送的一些请求使用我的拦截器,而其他一些请求则不使用。

由于$http服务是一个单例,我无法弄清楚如何在我的应用程序的不同位置使用它的两个实例。有什么办法可以做到这一点?

我经历了这个问题,但似乎它确实解决了循环依赖的问题

我需要 AngularJS $http 服务的两个实例还是什么?

0 投票
1 回答
2422 浏览

angularjs - 在 Angular 中设置和覆盖请求标头的正确方法

由于我们使用的身份验证方法,我需要为我的所有请求设置一个全局 http 标头。我们有一个身份服务器来使用 SSO 方法对用户进行身份验证。到目前为止一切顺利,我们使用拦截器来全局设置标头。但有时我们需要向不使用任何身份验证方法的第 3 方 API 发出请求。如何覆盖拦截器配置的身份验证标头?这是解决此问题的推荐方法吗?

0 投票
1 回答
1254 浏览

javascript - 如何在不同的文件中分离 AngularJS 应用程序和拦截器

我在将我的 $http 拦截器和我的应用程序配置分隔在单独的文件中时遇到问题。这是我尝试过的:

应用程序.js

authService.js

登录.js

如果我将 authService.js 的代码直接放在 app.js 源代码下,一切都很好,但如果我把它放在一个单独的文件中,我不会收到错误,但拦截器不起作用。

有人能帮忙吗?

0 投票
3 回答
9092 浏览

angularjs - 使用 $http 拦截器重试失败的请求

我的 webapp 正在与之交谈的 API 有时会过载,如果它无法处理请求,则会发送 500 Internal Server Error。

我的 Web 应用程序可以发送 100 多个不同的请求,因此如果我对每个请求单独实施重试,我将花费数小时的打字时间。

我已经在使用 $httpProvider 拦截器了,这里是(简化的)

从服务器收到 500 响应码后如何重新发送请求?

0 投票
1 回答
229 浏览

angularjs - Angular 在 Cordova 上的行为不同

我正在构建一个 Angular 应用程序,其中包含几个接近john papas styleguide的模块。之后,我有几个独立的模块,它们有自己的路由定义,其他的有拦截器。我的问题是:当我在 Cordova / Android 上运行它时,状态定义似乎只在我将它们放在主模块中时才起作用。在我的浏览器中工作。有人来过这个问题吗?

例如,这适用于本地浏览器和使用 cordova 的设备:

这仅适用于本地浏览器(主模块与上面相同):

错误表示在导航中未找到该状态。

0 投票
1 回答
1091 浏览

angularjs - 拦截请求和负载变化

我有这样的服务:

而且我想拦截 PUT 方法上的请求以发送没有 ID 属性的有效负载,因为我已经有了 URL 上的属性。

我创建了这些功能:

问题是屏幕(表单)上的id属性正在被删除。假设用户想要永远停留在多次更改同一记录的数据的情况。

0 投票
2 回答
532 浏览

angularjs - 发现循环依赖:Http Response Interceptor 401

基本思想是使用 Http Response Interceptor 来重定向我的网页,如果它给出 401 状态。但我不知道我这样做是否正确:我认为它是这样的,但我似乎比看起来更困难。目前我找到了一个循环依赖项。

我需要将拦截器推到其他地方吗?拦截器如何知道我是否收到 401 请求。是否也可以定义哪些 401 需要被拦截,哪些被忽略

这是我的服务:

更新2

正如评论中提到的,我注入了很多东西。所以这是一个已解决的问题,但是现在当我进入登录页面时,它会在加载页面时发出请求(localhost:8080/user),这会导致重定向到登录页面的无限循环,并导致浏览器崩溃.

那么有没有一种方法可以告诉拦截器哪些 url 需要重定向,哪些不需要

0 投票
3 回答
3209 浏览

angularjs - 拦截$http请求修改api调用url

我正在尝试修改 api 调用的 url 并将 api url 附加到每个服务函数的拦截器中的 ajax 调用的开头,例如

但是拦截器会拦截所有 http 请求,例如 .css 或 .html 或 .json 文件。在不修改其他http请求的情况下修改拦截器中的url有什么好方法?

0 投票
2 回答
1075 浏览

javascript - 为什么 $httpProvider.interceptors 返回“未定义”值

我创建了一个基本的 AngularJS 应用程序,它使用 Yelp 的 API,但无法$httpProvider.interceptors解析我的响应。

这是我的应用程序:

我的yelpAPI服务(未图示)验证我的 API 请求并生成 HTTP 请求。然后我将收到的数据输出到 Web 控制台,如下所示:

这是我请求的数据:

我想要位于businesses属性中的数组。所以,我认为用它$httpProvider.interceptors来解析在Object.businesses数组中找到的对象是个好主意。

这是$httpProvider.interceptors我提出初始请求时的样子:

这是现在的$httpProvider.interceptors样子:

现在,我收到一条错误消息,上面写着TypeError: Cannot read property 'businesses' of undefined. 有什么我忽略的吗?

编辑#1

console.log(response)在拦截器内部使用来打印我的响应,发现response.businesses实际上应该是response.data.businesses. 这解决了我的错误,但现在我的$http电话返回了undefined。知道我的新问题可能是什么吗?

编辑#2

0 投票
1 回答
859 浏览

javascript - 具有选择性 url 的 AngularJS http 拦截器

如何让 $http 拦截器只对给定的模式做出反应?

例如,我希望拦截器处理每个“/api/*”请求,而不要理会其他请求。