Dans JQuery ajax, comment gérer correctement une erreur HTTP 408?

Je fais un appel JQuery Ajax avec le jeu d’options “error”. Dans ma méthode “d’erreur”, je voudrais gérer un HTTP 408 différemment d’un HTTP 500 normal.

Le problème est que jxhr.statusCode est 0 et que la valeur “status” est simplement “error”! Mais dans firebug, je peux voir que le service a définitivement retourné le code d’état 408.

Pourquoi jxhr.statusCode est 0? Existe-t-il un autre moyen d’identifier une erreur HTTP 408?

Mon code de gestionnaire d’erreur se présente comme suit (pour une erreur 408, le code continue simplement dans le bloc ‘else’)

error: function (jxhr, status, error) { var $message = element.next().find('.loadmask-msg-label'); if (jxhr.status == 401) $message.html(settings.unauthorizedMessage); else if (jxhr.status == 408) $message.html(settings.timeoutMessage); else $message.html(settings.errorMessage); 

Selon Jquery, vous devriez faire ceci:

entrez la description de l'image ici

 $.ajax({ statusCode: { 404: function() { alert('page not found'); } } }) 

;

Le problème était FIREFOX. Dans tous les navigateurs, à l’exception de Firefox, le code d’état est 408. Dans Firefox, le code d’état est 0 et aucun en-tête de réponse n’est renvoyé. En outre, Firefox semble demander à nouveau 10 fois à cause de la réponse 408, je ne sais pas pourquoi! Et ce n’est que pour une réponse HTTP 408.

Finalement, nous avons dû renvoyer une erreur HTTP 500 avec des en-têtes personnalisés.

Sale 🙁