Pourquoi est-ce que IE problème aléatoire XHR 408/12152 réponses à l'aide de jQuery post?
Je viens de tomber sur un problème lié à IE qu'il semble y avoir pratiquement aucune documentation sur le Net - que peu de gens posent des questions semblables.
Lorsque j'utilise jQuery (1.4.2) pour envoyer une requête POST à mon serveur (à laquelle le serveur répond en envoyant les données JSON), je reçois parfois XHR 408 erreurs (ce qui signifie que le serveur a expiré lors de l'attente pour le client à la fin de sa demande), et (moins souvent), XHR 12152 erreurs (je ne sais pas ce que ces signifier). Il ne semble pas être un motif pour cela.
Cela se produit uniquement dans internet explorer (version 8 - je n'ai pas essayé d'autres versions, mais je peux confirmer que le problème se produit sur les deux installations différentes). Safari et Opera semblent bien.
Cela ne semble pas être un problème avec les requêtes GET.
Si quelqu'un a des idées sur le sujet, je lui en serais très reconnaissant.
Étant donné que vous êtes l'obtention de deux erreurs de délai d'attente, avez-vous essayé l'extension de la durée de temporisation?
Se produit dans IE9. Erreur 12152 et d'erreur 12031. Ne semble pas se produire avec des requêtes AJAX, et jusqu'à présent, de façon imprévisible.
OriginalL'auteur narnianUK | 2010-09-16
Vous devez vous connecter pour publier un commentaire.
Quand vous voyez IE retour des choses dans
status
qui, manifestement, ne sont pas des codes d'état HTTP, ils sont en fait Windows numéros d'erreur, généralement à partir de WinInet.12152 ERROR_HTTP_INVALID_SERVER_RESPONSE
semblent confirmer la408
'implication qu'il y a un faible niveau HTTP problème de syntaxe entre votre navigateur et le serveur. Traditionnellement, cela a été un problème avec l'ActiveX de mise en œuvre de XMLHttpRequest et keep-alives en HTTPS, mais la cause exacte est plutôt glauque.Vous pourriez peut-être essayer d'avoir la configuration du serveur
Connection: close
sur XMLHttpRequests qui viennent de l'IE, voir si cela aide? Cela va affecter les performances, malheureusement.Je pense que vous ne pouvez pas le mettre sur la demande de XMLHttpRequest, mais vous devriez être capable de le mettre sur la réponse du serveur. Vous pourriez sniff User-Agent sur le serveur pour configurer l'en-tête uniquement pour IE, mais étant donné les problèmes de serveur-côté d'UC en reniflant, il pourrait être préférable de détecter c'est à dire de JS (eg. à l'aide d'un commentaire conditionnel) et de passer un paramètre comme
?close=true
pour dire au serveur de le faire. Je n'ai pas essayé moi-même, serait curieux de voir si elle résout. Personnellement ce que j'obtiens, c'est très occasionnel socket fermée erreurs dans les logs, jamais de IE XMLHttpRequest.Je pense que c'est résolu - je viens d'envoyer un "Connection: close" dans l'en-tête à partir de PHP. J'ai été l'exécution d'un script JS qui affiche toutes les deux secondes, et jusqu'à présent, il n'est pas jeté toutes les erreurs, là où avant, il l'aurait fait. Je vais le garder un peu plus longtemps, mais je pense que vous avez juste sauvé la derniers mois " de travail que j'ai fait; je vous remercie!
la Connection: close-tête de réponse semble fonctionner, mais il continue à défaut parfois (erreur 12002). Vous avez d'autres idées sur ce point?
votre request timed out.
OriginalL'auteur bobince
Je l'ai résolu en ajoutant "Connection: close" à ajax en-tête également.
Il n'est pas nécessaire d'ajouter "Connection: close" de l'en-tête de réponse du serveur.
J'ai testé la cuisson de 1 000 demandes de.
comment voulez-vous ajouter une connexion à proximité de la demande? La connexion est une info qui n'est pas possible de changer selon le w3c, le navigateur est responsable de la définir. J'ai essayé de changer manuellement et ins fonctionnent pas.
OriginalL'auteur Tanin