如何仅针对AngularJS中的特定XHR请求删除默认标头?

时间:2013-08-23 09:04:18

标签: angularjs angular-resource

99%的ajax调用需要特定的“X-API-TOKEN”来验证我的Rails REST API并与之通信。但我也打电话给一个第三方API,我不断收到错误消息“Access-Control-Allow-Headers不允许请求头字段X-API-TOKEN。”

如果我在调用之前删除标题,一切正常,并且解决方法是删除然后在调用之后重新添加,但是有一种比这更简单的方法:

    apiToken = $http.defaults.headers.common["X-API-TOKEN"]
    delete $http.defaults.headers.common["X-API-TOKEN"]

    $http(
      method: "GET"
      url: 'http://...}}'
    ).success((data, status, headers, config) ->
    ).error (data, status, headers, config) ->

    $http.defaults.headers.common["X-API-TOKEN"] = apiToken

2 个答案:

答案 0 :(得分:17)

将欲望标题/标题设置为未定义,这样就不会影响全局设置。

$http( {
         method: 'GET',
         url: 'someurl',
         headers: {
           'X-API-TOKEN': undefined
         }
       }
     )

答案 1 :(得分:3)

$http服务配置对象允许您覆盖特定请求的http标头发送。请参阅config property headers

这可以采用标题列表或返回标题列表的函数。因此,对于非auth标头请求,请复制默认标头,删除您不需要的标头,然后发出请求。您可以将其存储以供日后使用。

请参阅$http documentation