Состояние 500 Внутренняя ошибка сервера в IE-11 с помощью приложения Angular Js

Я использую одностраничное приложение (SPA), используя Angular Js, MongoDb. И я использую вызов отдыха с promises. Прекрасный вызов работает отлично в браузере Chrome, Mozila, который используется для разработки. Но вызов в режиме ожидания не работает в IE-11. Это дает мне 500 Внутренняя ошибка сервера.

Я не могу найти линию отдыха. Потому что он не показывает номер строки. Но я могу поделиться примером кода отдыха.

  Rh.all('apicall').get('dbname/_aggrs/'+ ar_dep +'?avars=' + query).then(function (d) {

       console.log("response data");

      });

Выше вызов не печатает консоль. Потому что он ломается в IE-11, но эти остальные вызовы работают отлично в другом браузере. Если я putt прямой путь не с переменной, то он работает в IE-11. введите описание изображения здесь
Рабочий вызов для отдыха ниже

Rh.all('apicall').get('dbname').then(function (d) {

           console.log("response data");

          });

СЕТЬ в консоли (IE-11) введите описание изображения здесь

В ХРОМЕ введите описание изображения здесь

Я обновляю свой вопрос. Потому что я нашел какой-то разный синтаксический url, из-за передышки.

В ХРОМЕ:

Rh.all('apicall'). get ('dbname/_aggrs/' + ar_dep + '? avars =' + query)

После разбора

локальный: 8080/apicall/имя_бд/_aggrs/маршрут аварцы = {% 22routes% 22:% 22US% 22}?

В объекте запроса у меня есть маршруты: us. Таким образом, в хром он анализирует% 22 -% 22 место ".

В IE-11

Rh.all('apicall'). get ('dbname/_aggrs/' + ar_dep + '? avars =' + query)

После разбора

локальный: 8080/apicall/имя_бд/_aggrs/маршрут авары = { "маршруты": "США" }?

В IE-11 он не анализирует двойные qoutes на% 22% 22. Он разбирается так же, как строка.

Ответ 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 между браузерами и посмотрите, есть ли что-то явно отличающееся от них.

Надеюсь, что этого достаточно, чтобы помочь вам диагностировать проблему.