Comment puis-je supprimer les en-têtes par défaut seulement pour certaines demandes XHR dans AngularJS?
99% de mes appels ajax besoin d'un "X-API-JETON" pour authentifier et de communiquer avec mes Rails API REST. Mais je fais aussi un appel à une tierce partie de l'API et je reçois un message d'erreur disant: "Demande de champ d'en-tête X-API-JETON n'est pas autorisé par Access-Control-Allow-en-Têtes."
Tout fonctionne bien si je effacez l'en-tête juste avant l'appel, et un travail autour consisterait à supprimer et ajouter de nouveau après l'appel, mais est-il un moyen plus simple que cela:
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
OriginalL'auteur Hawk | 2013-08-23
Vous devez vous connecter pour publier un commentaire.
La
$http
service objet de configuration vous permet de remplacer l'en-tête http pour envoyer une demande spécifique. Voir la config de la propriétéheaders
.Cela peut prendre une liste d'en-têtes ou une fonction qui retourne une liste d'en-têtes. Alors pour le non en-tête d'authentification demande de faire une copie des en-têtes par défaut supprimer l'en-tête vous n'avez pas besoin et ensuite faire la demande. Vous pouvez stocker ce pour une utilisation ultérieure.
Voir
$http
la documentationOriginalL'auteur Chandermani
Définir le désir d'en-tête/en-têtes, indéfinis comme cela, alors il ne sera pas affecter les paramètres globaux.
Il ne fonctionne pas avec
$resource
?!!?OriginalL'auteur Eduardo in Norway