Je crée une API RESTful pour un projet personnel et la zone administrative utilise Ext. Étant donné que l'API nécessite un passage d'un jeton à l'autre via l'en-tête personnalisé 'X-API-Auth', je dois pouvoir l'ajouter à chaque requête Ajax faite par Ext. Par exemple, dans la zone de gestion des utilisateurs, j'ai un GridPanel, en utilisant un JsonStore, affiche une liste d'utilisateurs enregistrés. La propriété 'autoLoad' est définie sur TRUE. De cette façon, lorsque vous visitez l'écran pour la première fois, le GridPanel est automatiquement rempli.Ext.Ajax.defaultHeaders ignoré lorsque JsonStore.autoLoad = true
Avant tout est rendu, j'incluent les en-têtes suivants:
Ext.Ajax.defaultHeaders = {
'X-API-Auth' : __API_KEY,
'Accept' : 'application/json'
};
Où __API_KEY 'est le jeton. Maintenant, d'après ce que j'ai compris, ces en-têtes personnalisés devraient maintenant être envoyés avec chaque appel Ajax. Lorsque je visite la page de la liste des membres pour la première fois, j'obtiens une réponse 403 Forbidden de l'API. Cela est dû au fait que l'appel Ajax initial effectué par GridPanel n'envoie pas les en-têtes requis. L'API fonctionne correctement car, sans les en-têtes, elle ne peut pas authentifier la requête. Maintenant, si je clique sur le bouton 'recharger' dans le composant PagingToolbar inclus associé au JsonStore du GridPanel, il envoie les en-têtes. Tous les appels Ajax à l'extrémité de liste des membres invoqués manuellement donnent le résultat souhaité.
Y a-t-il une raison pour laquelle 'autoLoad' sur un magasin ne respecte pas la propriété 'defaultHeaders'? Si quelqu'un peut faire la lumière sur ce sujet, ce serait grandement apprécié. J'ai aussi posé cette question sur les forums Sencha et personne ne semble avoir de réponse.
Merci!