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

avi*_*ian 11 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
Run Code Online (Sandbox Code Playgroud)

Edu*_*way 18

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

$http( {
         method: 'GET',
         url: 'someurl',
         headers: {
           'X-API-TOKEN': undefined
         }
       }
     )
Run Code Online (Sandbox Code Playgroud)


Cha*_*ani 3

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

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

查看$http 文档