2013-08-23 11 views
9

ajax çağrılarımın% 99'unun, Rails REST API'm ile kimlik doğrulamak ve iletişim kurmak için belirli bir "X-API-TOKEN" olması gerekir. Ama aynı zamanda bir thrid party API'sine çağrı yapıyorum ve "Access-Control-Allow-Headers tarafından izin verilmeyen başlık alanı X-API-TOKEN'e izin verme" diyen bir hata alıyorum.AngularJS'deki belirli XHR istekleri için varsayılan üstbilgileri nasıl kaldırırım?

her şey doğru çağrısından önce başlığını DELTE ve çalışma etrafında sonra çağrısından sonra yeniden ekleme, silme ve olacaktır eğer iyi çalışır, ancak bundan daha kolay bir yolu vardır:

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 

cevap

4

$http servis yapılandırma nesnesi, belirli bir istek için gönderilen http üstbilgisini geçersiz kılmanıza olanak tanır. Yapılandırma özelliği headers'a bakın.

Bu, üstbilgileri veya üstbilgi listesini döndüren bir işlevlerin listesini alabilir. Öyleyse, auth olmayan başlık talebi için varsayılan başlıkların bir kopyasını yapmanız gerekmez. Bunu daha sonra kullanmak için saklayabilirsiniz.

documentation

+0

Bu çözüm en biz birden çok özel başlıklara sahip & bu başlıklara gerek yok birden tür harici API çağrıları varsa sadece bir tuşa ama ne olduğunu varsayalım için iyidir. TransformRequest kullanarak bunu başarabilir miyiz? –

13

$http gör Set arzu başlık/başlıklar, böyle tanımsız sonra küresel ayarlarını etkilemez.

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

undefined yoludur. Şerefe Eduardo – SkyBlues87

İlgili konular