Ответ 1
Ошибка 500 всегда связана с сервером. Симптомы могут возникать только с определенным браузером, но это сервер, который терпит неудачу; запрос, отправляемый на сервер, приводит к некорректному отказу на стороне сервера.
Ошибка 500 сама по себе является слишком общей; не зная подробностей об ошибке, всегда очень сложно диагностировать, и, честно говоря, я не смогу дать вам окончательный ответ здесь.
В конце концов, вы должны исключить очевидное и проверить свои настройки браузера в IE. В частности, любые настройки, которые могут привести к неправильной связи с сервером. Например, убедитесь, что файлы cookie включены и работают правильно.
Но первое, что вам нужно сделать, это обсудить с продавцом или разработчиками API, потому что они будут иметь доступ к журналам ошибок сервера, и они захотят узнать об этом, если их код вызывает ошибку 500.
Однако, если вы хотите исследовать в конце, тот факт, что он специфичен для одного браузера, является ключом. Если другие браузеры работают, то это говорит нам, что этот браузер (IE11) отправляет запрос с чем-то, что отличается от других браузеров, и это то, что вызывает код на стороне сервера потерпеть неудачу. Это дает нам возможность работать в ходе расследования.
Итак, первое, что нужно сделать, это проверить запрос во всех браузерах. Используйте инструменты F12 dev в Chrome, Firefox и IE и дойдете до того, что вы сделали один и тот же вызов во всех трех, и он работает в FF и Chrome, но не в IE11.
В инструментах dev вы должны теперь изучить детали запроса для всех трех. Сравните их.
Начните с просмотра данных запроса - то есть фактической строки запроса, которая была отправлена. Если есть различия, подумайте, может ли какая-либо из этих различий быть причиной ошибки. Что-то может показаться очевидным; например, если IE усекает переменную или что-то в этом роде. Если это решает проблему, то отлично.
Если это не поможет, вам нужно посмотреть более подробно. Может быть, есть некоторые отличия, но они не похожи на то, что они должны что-то сломать? Современные инструменты для браузера позволяют редактировать и повторно отправлять запрос, поэтому попробуйте отредактировать запрос в инструментах Chrome или Firefox dev и сделайте параметры такими же, как те, которые произошли из IE. Теперь попробуйте повторно отправить этот запрос. Если вам повезет, это приведет к сбою запроса в другом браузере, что позволит вам показать, что конкретный набор данных является проблемой (а не конкретным браузером). Вы упомянули, что это сторонний API, поэтому вам нужно будет обсудить с поставщиком API, чтобы узнать, почему этот запрос нарушает их API.
Если вы все еще не нашли проблему на этом этапе, и вы отправляете одинаковые запросы в обоих браузерах, и вы вошли в систему как один и тот же пользователь, то следующим шагом будет просмотр заголовков запросов.
Существует один заголовок запроса, который определенно будет другим: строка User Agent. Но могут быть и другие. Повторите попытку отправки запроса, который работает в Chrome, но с заголовками запроса на отказ в IE (включая строку UA). Не удалось ли выполнить запрос в Chrome? Если это так, сузите, какие заголовки отличаются друг от друга, что делает его неудачным.
Опять же, если это позволяет вам найти определенный набор данных запроса и заголовков, которые создают проблему, то вам нужно будет обсудить с поставщиком API.
Если все это не помогает, попробуйте взглянуть на файлы cookie. Вы уже проверили, что файлы cookie работают, поэтому теперь это выглядит как длинный, но еще раз сравните файлы cookie между браузерами и посмотрите, есть ли что-то явно отличающееся от них.
Надеюсь, что этого достаточно, чтобы помочь вам диагностировать проблему.