J'ai un certain nombre de demandes de publication dans mon application. Certains d'entre eux doivent avoir et extraire l'en-tête avec token
Je ne sais pas comment l'ajouter
Jusqu'à présent, mon code est comme ça. Je vérifie s'il y a un jeton et quand l'ajouter aux en-têtes et après cela, je fais une demande de publication avec la méthode de publication vue-resource.
let headers = new Headers({'Content-Type': 'application/json;charset=utf-8'});
if(token !== '') {
headers.append('TOKEN', token);
}
return this.http.post(uri, data, headers)
.then(this.extractData)
.catch(this.handleError);
Mais cela n'ajoute pas TOKEN
Qu'est-ce que ça marche
this.http.interceptors.Push(function(request) {
request.headers.set('TOKEN', token);
});
à la place de headers.append('TOKEN', token);
Mais pour une raison quelconque, il pousse l'en-tête TOKEN
non pas pour certaines requêtes mais pour toutes.
Donc, lorsque je fais une demande avec un jeton - cela fonctionne bien, après cela, je fais une demande sans jeton, mais il l'ajoute toujours.
Quelqu'un sait quel est le meilleur moyen de résoudre ce problème?
UPD Si je console.log(headers.get('TOKEN'))
tout en faisant headers.append('TOKEN', token);
cela me donne la bonne valeur. Donc, je suppose que la demande de publication elle-même est appelée avec de mauvais en-têtes.
Dans document , headers
devrait être un objet Javascript normal, pas window.Headers
S'il vous plaît essayez
let headers = {
'Content-Type': 'application/json;charset=utf-8'
};
if(token !== '') {
headers['TOKEN'] = token
}
return this.http.post(uri, data, {headers})
.then(this.extractData)
.catch(this.handleError);
Ok, je pense que je l'ai compris. Merci au commentaire de @ ssc-hrep3 et à la réponse de @ittus
let headers = {
'Content-Type': 'application/json;charset=utf-8'
};
if(token !== '') {
headers['TOKEN'] = token
}
return this.http.post(uri, data, {headers: headers})
.then(this.extractData)
.catch(this.handleError);