Chiamate JSONP Ajax tra domini jQuery non riusciti casualmente per motivi sconosciuti in alcune versioni di IE

Sto effettuando chiamate Ajax interdominio utilizzando l’ultima versione di jQuery 1.7.1. con una risposta JSONP.

L’ho già testato ampiamente su: Safari, Chrome, Opera, Firefox, IE6 IE7 IE8 IE9 (in modalità di compatibilità e non) su Win XP e Win 7, tutti perfettamente funzionanti. Non mancano mai su più test. Tutti utilizzano le impostazioni predefinite standard con JavaScript e cookie abilitati.

In produzione, la chiamata molto raramente fallisce, ma ho avuto diversi utenti su centinaia che hanno. Probabilmente uno su 50 o 100. Non posso dare un senso a questo perché in tutti i casi:

Sembra solo influenzare IE, non ho mai avuto il problema con altri browser.

  • Il problema scompare se utilizzano un browser diverso, ho detto loro di installare Chrome.

  • Il problema non può essere la connessione, il computer o il sistema operativo in base al cambiamento dei browser.

Posso solo escludere che debba essere un’impostazione che può essere trovata solo su IE. Qualcuno ha avuto questo problema? Qualcuno ha un’idea di quale impostazione IE potrebbe bloccare le chiamate Ajax tra domini con una risposta JSONP.

Non possono essere i soliti problemi AJAX / JSONP / Cross-domain, dal momento che questi problemi non si verificano quando i browser sono impostati come predefiniti, e anche perché l’ho già fatto nel modo corretto: * stringa di timestamp alla fine per smettere di super memorizzazione nella cache * Risposta JSONP ecc. ecc

Posso confermare che la chiamata non sta sparando affatto.

Questo problema mi ha tormentato ultimamente. La mia ricerca indica che le chiamate jQuery ajax vengono memorizzate nella cache da IE, quindi IE decide che non è necessario ottenere i dati che spieghino il motivo per cui nulla sta accadendo. Queste domande SO hanno aiutato a interrompere la risposta di caricamento jquery dalla cache e getjson a restituire i dati memorizzati nella cache in IE8

Sembra che l’impostazione ajax extra esplicita per disabilitare il caching abbia aiutato IE a ottenere il messaggio. Tutte le chiamate ajax in jQuery dovrebbero evitare il caching quando json è il tipo di dati, ma non sono convinto che funzioni. Questo è il codice che mi è sembrato utile, che si inserisce subito prima della chiamata getJSON () o ajax ().

$.ajaxSetup({ cache: false });

Usa Fiddler2 per esaminare le richieste e le risposte http e vedere ciò che viene comunicato avanti e indietro.

Inoltre, potrebbe essere un problema con TCP / IP v6 sotto il cofano. Abbiamo riscontrato alcuni problemi con IE nello stesso contesto e i sintomi sono quasi sempre sporadici.

Questo sa di problemi di temporizzazione javascript. Perché le cose vengono eseguite in qualsiasi ordine si sentano come in javascript un problema da qualche altra parte potrebbe avere effetto sulla tua minaccia. IE tu fai la tua richiesta jsonp ma da qualche parte lungo la linea qualcosa potrebbe saltare in aria nella tua discussione e causare un problema alla richiesta. La mia ipotesi è probabilmente che stai usando innerHtml o innerText da qualche parte poiché a volte non sono supportati e talvolta lo sono.

Ho la sensazione che questo è legato alle barre degli strumenti / estensioni / spyware che gli utenti hanno installato. Dei 3 UA forniti, uno ha FunWebProducts, uno ha ibrytetoolbar_playbryte e l’altro ha la barra degli strumenti di Google, che potrebbe causare un problema, oppure potrebbe essere qualcos’altro sul proprio sistema che forse intercetta le richieste. Potresti provare a installare varie barre degli strumenti di IE e vedere se il problema può essere riprodotto, ma ciò potrebbe causare problemi indesiderati. Lavorare in giro potrebbe non essere ansible.