【问题标题】:How do I remove the default headers just for specific XHR requests in AngularJS?如何删除 AngularJS 中特定 XHR 请求的默认标头?
【发布时间】:2013-08-26 06:35:00
【问题描述】:

我 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

【问题讨论】:

    标签: angularjs angular-resource


    【解决方案1】:

    像这样设置需要的 header/headers 为 undefined,那么它不会影响全局设置。

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

    【讨论】:

    • 未定义的方式。干杯爱德华多
    【解决方案2】:

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

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

    $httpdocumentation

    【讨论】:

    • 此解决方案适用于假设我们只有一个键,但如果我们有多个自定义标头并且有多个不需要这些标头的外部 API 调用怎么办。我们可以使用 transformRequest 来实现吗?
    猜你喜欢
    • 2018-07-16
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2022-09-27
    • 2014-07-29
    • 2020-01-15
    • 1970-01-01
    相关资源
    最近更新 更多