问题标签 [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 - 如何在 AngularJS 中使用两个单独的 $http 服务实例?
我正在实现一个 angularjs 服务,它将$http
调用发送的数据保存在localStorage
. 为了做到这一点,我使用了请求拦截器,这样每当通过 发送 http 请求时$http
,数据就会保存在localStorage
. 下面是我的拦截器代码,
为了使上述拦截器正常工作,我必须将其注册interceptors
到$httpProvider
. 我这样做是为了实现这一点,
问题
现在,当我OfflinkJS
在另一个模块中使用模块时,所有$http
调用都通过我的拦截器。但是我想让$http
服务发送的一些请求使用我的拦截器,而其他一些请求则不使用。
由于$http
服务是一个单例,我无法弄清楚如何在我的应用程序的不同位置使用它的两个实例。有什么办法可以做到这一点?
我经历了这个问题,但似乎它确实解决了循环依赖的问题
angularjs - 在 Angular 中设置和覆盖请求标头的正确方法
由于我们使用的身份验证方法,我需要为我的所有请求设置一个全局 http 标头。我们有一个身份服务器来使用 SSO 方法对用户进行身份验证。到目前为止一切顺利,我们使用拦截器来全局设置标头。但有时我们需要向不使用任何身份验证方法的第 3 方 API 发出请求。如何覆盖拦截器配置的身份验证标头?这是解决此问题的推荐方法吗?
javascript - 如何在不同的文件中分离 AngularJS 应用程序和拦截器
我在将我的 $http 拦截器和我的应用程序配置分隔在单独的文件中时遇到问题。这是我尝试过的:
应用程序.js
authService.js
登录.js
如果我将 authService.js 的代码直接放在 app.js 源代码下,一切都很好,但如果我把它放在一个单独的文件中,我不会收到错误,但拦截器不起作用。
有人能帮忙吗?
angularjs - 使用 $http 拦截器重试失败的请求
我的 webapp 正在与之交谈的 API 有时会过载,如果它无法处理请求,则会发送 500 Internal Server Error。
我的 Web 应用程序可以发送 100 多个不同的请求,因此如果我对每个请求单独实施重试,我将花费数小时的打字时间。
我已经在使用 $httpProvider 拦截器了,这里是(简化的)
从服务器收到 500 响应码后如何重新发送请求?
angularjs - Angular 在 Cordova 上的行为不同
我正在构建一个 Angular 应用程序,其中包含几个接近john papas styleguide的模块。之后,我有几个独立的模块,它们有自己的路由定义,其他的有拦截器。我的问题是:当我在 Cordova / Android 上运行它时,状态定义似乎只在我将它们放在主模块中时才起作用。在我的浏览器中工作。有人来过这个问题吗?
例如,这适用于本地浏览器和使用 cordova 的设备:
这仅适用于本地浏览器(主模块与上面相同):
错误表示在导航中未找到该状态。
angularjs - 拦截请求和负载变化
我有这样的服务:
而且我想拦截 PUT 方法上的请求以发送没有 ID 属性的有效负载,因为我已经有了 URL 上的属性。
我创建了这些功能:
问题是屏幕(表单)上的id属性正在被删除。假设用户想要永远停留在多次更改同一记录的数据的情况。
angularjs - 发现循环依赖:Http Response Interceptor 401
基本思想是使用 Http Response Interceptor 来重定向我的网页,如果它给出 401 状态。但我不知道我这样做是否正确:我认为它是这样的,但我似乎比看起来更困难。目前我找到了一个循环依赖项。
我需要将拦截器推到其他地方吗?拦截器如何知道我是否收到 401 请求。是否也可以定义哪些 401 需要被拦截,哪些被忽略
这是我的服务:
更新2
正如评论中提到的,我注入了很多东西。所以这是一个已解决的问题,但是现在当我进入登录页面时,它会在加载页面时发出请求(localhost:8080/user),这会导致重定向到登录页面的无限循环,并导致浏览器崩溃.
那么有没有一种方法可以告诉拦截器哪些 url 需要重定向,哪些不需要
angularjs - 拦截$http请求修改api调用url
我正在尝试修改 api 调用的 url 并将 api url 附加到每个服务函数的拦截器中的 ajax 调用的开头,例如
但是拦截器会拦截所有 http 请求,例如 .css 或 .html 或 .json 文件。在不修改其他http请求的情况下修改拦截器中的url有什么好方法?
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
javascript - 具有选择性 url 的 AngularJS http 拦截器
如何让 $http 拦截器只对给定的模式做出反应?
例如,我希望拦截器处理每个“/api/*”请求,而不要理会其他请求。