2014-11-25 38 views
8

Birden çok denetleyiciyle bir web sunucum var. $http hizmetinin varsayılan başlıkları, denetleyicilerimden birinde (http.defaults.headers.common['headername'] aracılığıyla) bir geri aramada ayarlıyorum. Ancak, bu başlıklar diğer denetleyicilerin sonraki çağrılarında ayarlanmaz. Sahip olduğum her kontrolör için onları ayarlamalı mıyım yoksa bir kerelik mi? örneğin çalışma bloğunda

Seti $ http.defaults.headers:

+0

bunu Uygulamayı işe koşulması yaparken nereye bu ortak başlığı ayarlarken, söz neyi oldukça tuhaf ?, bir $ kaynağı kullanarak denediniz mi? –

+0

$ http hizmetini kullanmaya çalışıyorum çünkü sadece bir arama yapmam gerekiyor, tam $ kaynak hizmetine ihtiyacım yok. Uygulamayı önyüklerken üstbilgiyi ayarlamıyorum: Üstbilginin değerini başka bir sunucudan alıp ayarladım, ancak uygulama başlatıldı. –

+0

Haklısın, bir $ kaynak kullanarak bunu yapmaya çalıştığım şekilde çalışıyor. Ancak, $ http hizmetinin neden çalışmadığını bilmiyorum. –

cevap

12

iki yöntemden birini kullanmalıdır

module.run(function($http) { 
    $http.defaults.headers.common.Authorization = 'Basic Token'; 
}); 

Kullanım önleme

var interceptor = function() { 
    return { 
    'request': function(config) { 
     config.headers['Authorization'] = 'Basic Token'; 
    } 
    } 
}; 

angular.module('app', []) 
    .config(function ($httpProvider) { 
    $httpProvider.interceptors.push(interceptor); 
}); 
+1

Başlığı çalışma veya yapılandırma satırına ayarlayamıyorum, değer bu noktada hala kullanılabilir değil. –

+1

Hm, interceptor, kodunuz talepte bulunduğunda o zaman çalışır. Yani o anda tüm bilgiler bilinir. Değeri servis üzerinden iletebilirsiniz. Btw, denetleyiciyle üstbilgilerle çalışmak iyi bir fikir değildir. Denetleyiciler zayıf olmalı ve herhangi bir iş ve API mantığı hizmetlere yerleştirilmelidir. –

+0

Yani, engelleyici içinde, yalnızca değer mevcutsa ve çalışma zamanı boyunca çalışacaksa, başlığın değerini ayarlayacak bir servis enjekte edebilir miyim? Bazı nedenlerle bir yapılandırma bloğundaki tüm başlatmaların "statik" olduğunu düşündüm, ancak bu yaklaşımı deneyeceğim. –

İlgili konular