Un errore 500 è sempre correlato al server. I sintomi possono verificarsi solo con un browser specifico, ma è il server che non funziona; la richiesta che viene inviata al server sta causando in qualche modo il fallimento del codice lato server.
L'errore 500 da solo è troppo generico; senza conoscere maggiori dettagli sull'errore, è sempre molto difficile da diagnosticare e francamente non sarò in grado di darti una risposta definitiva qui.
Alla fine, dovresti escludere l'ovvio e controllare le impostazioni del tuo browser in IE. In particolare, tutte le impostazioni che potrebbero impedire la corretta comunicazione con il server. Ad esempio, assicurati che i cookie siano abilitati e funzionino correttamente.
Ma la prima cosa che dovresti fare è discutere con il fornitore o gli sviluppatori dell'API perché avranno accesso ai log degli errori del server e vorranno sapere se il loro codice genera un errore 500.
Tuttavia, se vuoi indagare alla tua fine, il fatto che sia specifico per un browser è un indizio. Se gli altri browser funzionano, ciò che ci dice è che questo browser (IE11) sta inviando la richiesta con qualcosa che è diverso dagli altri browser, ed è quel qualcosa che sta attivando il codice lato server per fallire. Questo ci dà qualcosa su cui lavorare nell'indagine.
Quindi la prima cosa da fare è esaminare la richiesta in tutti i browser. Usa gli strumenti di sviluppo F12 in Chrome, Firefox e IE e arriva al punto in cui hai effettuato la stessa chiamata in tutti e tre e funziona in FF e Chrome ma non in IE11.
Negli strumenti di sviluppo, dovresti ora essere in grado di esaminare i dettagli della richiesta per tutti e tre. Confrontali.
Inizia osservando i dati della richiesta, ovvero la stringa di query effettiva che è stata inviata. Se sono presenti differenze, valutare se qualcuna di queste differenze può essere responsabile dell'errore. Qualcosa può risaltare ovviamente; ad esempio, se IE ha troncato una variabile o qualcosa del genere. Se questo risolve il problema, ottimo.
Se non aiuta, allora è necessario guardare più in dettaglio. Forse ci sono alcune differenze ma non sembrano che dovrebbero rompere qualcosa? I moderni strumenti di sviluppo del browser ti consentono di modificare e inviare nuovamente una richiesta, quindi prova a modificare la richiesta in Chrome o negli strumenti di sviluppo di Firefox e imposta i parametri come quelli di IE che non hanno funzionato. Ora prova a inviare nuovamente quella richiesta. Se sei fortunato, ciò causerà il fallimento della richiesta nell'altro browser, il che ti consentirà di mostrare che il problema è un insieme specifico di dati (piuttosto che un browser specifico). Hai menzionato che si tratta di un'API di terze parti, quindi dovrai discutere con il fornitore dell'API per scoprire perché quella query interrompe la loro API.
Se a questo punto non hai ancora riscontrato il problema e stai inviando query identiche in entrambi i browser e hai effettuato l'accesso come lo stesso utente, il passaggio successivo consiste nell'esaminare le intestazioni della richiesta.
C'è un'intestazione di richiesta che sarà sicuramente diversa:la stringa dell'agente utente. Ma potrebbero essercene anche altri. Ancora una volta, prova a inviare nuovamente la richiesta che funziona in Chrome, ma con le intestazioni della richiesta non riuscita in IE (inclusa la stringa UA). La richiesta ora non riesce in Chrome? In tal caso, restringere il campo delle intestazioni diverse che causano un errore.
Anche in questo caso, se ciò ti consente di trovare un insieme specifico di dati di richiesta e intestazioni che causa il problema, dovrai discuterne con il fornitore dell'API.
Se tutto ciò non aiuta, prova a guardare i cookie. Hai già verificato che i cookie funzionino, quindi ora sembra una cosa ardua, ma confronta di nuovo i cookie tra i browser e verifica se c'è qualcosa di ovviamente diverso in essi.
Spero che quanto sopra sia sufficiente per aiutarti a diagnosticare il problema.