Я написал веб-приложение, которое отправляет файл через http в спокойный веб-сервис. Веб-служба может ответить 400 или 403, если служба обнаружит какие-либо проблемы с запросом. Ответ также содержит xml, описывающий причину (ы) ответа с кодом ошибки http.
Мое веб-приложение отправляет файл в скрытый iFrame и использует обработчик события onload iFrame для выполнения функции, которая анализирует ответ сервера, представленный в iFrame, и сообщает пользователю, как прошла загрузка файла.
Мое решение отлично работает с Firefox и Chrome, но не с Internet Explorer 7.
Моя проблема в том, что если сервер отвечает кодом ошибки, например, 400 или 403 Internet Explorer 7 загружает свою собственную страницу статической ошибки. Это означает, что мой сценарий не может проанализировать сообщение об ошибке, отправленное в ответе, поскольку страница статической ошибки не находится в том же домене, что и сам сценарий, и нарушает ту же политику происхождения (и, поскольку это страница статической ошибки, подробная ошибка веб-службы сообщения все равно не будет).
Я вижу только два обходных решения этой проблемы, и я бы предпочел избегать их обоих, если это возможно:
A) Вернуть 200 веб-службе, когда пользовательский агент указывает Internet Explorer, даже если произошла ошибка, но включить ответ xml, который указывает на ошибку.
B) Отправьте сообщение веб-приложения «посреднику», который направит запрос веб-службе, прочитает ответ и затем переведет его на 200 или что-то еще, что работает (так что это в основном вариант А, но более гибкий и по крайней мере, это сохраняет "чистый" оставшийся веб-сервис).
Есть ли другой способ решить мою проблему?