2017-05-19 1 views
0

Lorsque je fais une requête CORS et que le serveur renvoie le code 401 en réponse, je ne peux obtenir aucune information de réponse valable (status = 0, responseText est vide).Extjs 6 + Spring Rest: réponse vide pour l'erreur 401

Sur le côté de ExtJS J'utilise proxy repos avec méthode surchargée:

doRequest : function(request) { 
    var me = this, 
    requestConfig = request.getConfig(); 
    requestConfig.cors = true; 
    requestConfig.useDefaultXhrHeader = false; 
    Ext.Ajax.cors = true; 
    Ext.Ajax.useDefaultXhrHeader = false; 
    me.callParent([request]); 

},

dans le navigateur (Chrome) Je peux constater que la réponse a 401 code d'erreur et des en-têtes. Mais lorsque je tente de traiter la réponse dans la méthode de procuration suivante:

processResponse : function(success, operation, request, response) { 
    var me = this; 
    if (response.status == 401 || response.status == 403) { 
    me.handleSecurityError(response); 
    } else { 
    me.callParent([success, operation, request, response]); 
    } 

},

je suis arrivé seul succès = réponse fausse et vide. De plus, j'ai un filtre d'authentification par ressort: lorsque je lance une exception d'authentification dans le filtre, j'obtiens une réponse vide, mais lorsque je renvoie ResponseEntity avec un code quelconque du contrôleur, j'obtiens une réponse précieuse.

Que vais-je faire pour obtenir au moins un code d'erreur?

Répondre

1

Comment vous configurez-vous les cors?

très probablement springSecurityFilterChain est placé avant votre filtre cors, donc le filtre cors n'est pas appelé.

@Component 
@Order(Ordered.HIGHEST_PRECEDENCE) 
public class SimpleCorsFilter implements Filter 

essayer de placer @Order(Ordered.HIGHEST_PRECEDENCE) de sorte que le filtre sera invoqué CORS avant springSecurityFilterChain