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



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

如果我在调用前删除标题,一切都会很好,解决办法是删除标题,然后在调用后重新添加,但有比这更简单的方法吗:

    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

像这样将所需的一个或多个headers设置为undefined,这样就不会影响全局设置。

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

$http服务配置对象允许您覆盖特定请求的http标头send。请参阅配置属性headers

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

参见$http文档

最新更新