当前位置: 首页 > 面试题库 >

在AngularJS上设置默认标头,但不要在一个特定请求上使用它

须曜文
2023-03-14
问题内容

为了发送OAuth2令牌,我在AngularJS上设置了默认标头,如下所示:

$http.defaults.headers.common['Authorization'] = 'Bearer ' + access_token;

这很好用,但对于一个特定的请求,我不需要此标头(出现错误)。

执行该请求时,是否可以排除默认标头?

谢谢!

感谢Riron让我走上正确的道路。答案是:

$http({
    method: 'GET',
    url: 'http://.../',

    transformRequest: function(data, headersGetter) {
        var headers = headersGetter();

        delete headers['Authorization'];

        return headers;
    }
});

问题答案:

当您使用$ http拨打电话时,可以通过在请求配置中直接提供默认头来覆盖默认头:

$http({method: 'GET', url: '/someUrl', headers: {'Authorization' : 'NewValue'} }).success();

否则,您transformRequest仍可以在$ http配置中使用参数转换请求。见doc:

transformRequest – {function(data,headersGetter)|Array.<function(data, headersGetter)>}转换函数或此类函数的数组。转换函数采用http请求正文和标头,并返回其转换后的(通常是序列化的)版本。

这样,您可以在发送单个请求之前将其删除:

$http({method: 'GET', 
       url: '/someUrl', 
       transformRequest: function(data,headersGetter){ //Headers change here } 
}).success();


 类似资料:
  • 问题内容: 我正在尝试向每个API调用添加带有访问令牌的标头。它适用于所有GET请求,但是一旦我尝试进行POST,便不会添加标头。 这是我添加令牌的方法: 从这里调用: 我尝试这样做如下: 但这也不起作用。它仅在我如下更改标题键名称时才有效: 如何在AngularJs中为帖子分配默认标题并获取请求? 问题答案: 与其将令牌放在每个服务(或调用)内部的标头上,不如使用拦截器(docs在此处)。 然后

  • 我刚刚注意到,在以前的HTTP请求选项中可能使用的Header Object在新的Interceptor中不再支持。 这是新的拦截器逻辑: 现在,我有两种方法可以在这个请求中添加标题: 例子: 如何在此请求上有条件地添加多个标头?与我以前处理Header对象的方法相同:

  • 问题内容: 我想在使用Spring的请求中设置的值。 这是我的Spring请求处理代码 这是我的Java REST客户端: 这对我有用;我从服务器端获取了JSON字符串。 我的问题是:当我使用RestTemplate时,如何指定标头(例如)和请求方法(例如,…)? 问题答案: 我建议使用可以接受的方法之一,也可以为其设置。(你也可以指定要使用的HTTP方法。) 例如, 我喜欢这种解决方案,因为它是

  • 我的问题是:在使用RESTTemplate时,如何指定头(例如、,...)和请求方法(例如、,...)?

  • 问题内容: 我的应用程序中有一个需要基本身份验证的特定请求,因此我需要为该请求设置Authorization标头。我读过有关设置HTTP请求标头的信息,但据我所知,它将为该方法的所有请求设置标头。我的代码中有这样的内容: 但我不希望我的每一个帖子请求都发送此标头。有什么方法可以仅为我想要的一个请求发送标头吗?还是我必须在请求后将其删除? 问题答案: 传递给每次调用标头的config对象中有一个标头

  • 问题内容: 在使用XMLHttpRequest进行AJAX调用时,似乎无法从JavaScript更改大多数请求标头。请注意,必须在Gecko浏览器中调用when。设置_Referer时_ ,它没有设置(我查看了使用Firebug和Tamper Data发送的请求标头)。当我设置User-Agent时,它完全搞砸了AJAX调用。但是,设置接受和_内容类型_确实可以。我们是否无法在Firefox 3中