2012-04-30 4 views
3

У меня возникли проблемы с XDomainRequest onerror обработчик. Когда возникает ошибка, я, похоже, не могу получить тело ответа HTTP (через xdr.responseText). Успешные запросы (200 OK) работают нормально.XDomainRequest - Получить тело ответа при ошибке

Вот запрос:

POST http://localhost/path HTTP/1.1 
Accept: */* 
Origin: http://localhost 
Accept-Language: cs-CZ 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) 
Host: localhost 
Content-Length: 34 
Connection: Keep-Alive 
Pragma: no-cache 

[Data] 

И вот ответ:

HTTP/1.1 400 Bad Request 
Content-Length: 54 
Content-Type: application/json; charset=utf-8 
Server: Microsoft-IIS/7.5 
Access-Control-Allow-Origin: * 
Date: Mon, 30 Apr 2012 20:57:32 GMT 

[Data] 

Можно ли получить тело ответа?

ответ

4

К сожалению, невозможно получить тело ответа при ошибке. Все, что вы можете знать, это ошибка. См. Мой родственный вопрос здесь: Is it possible to trap CORS errors?

Один из возможных способов обхода (если у вас есть контроль над сервером) - это всегда возвращать HTTP 200, но включать код ошибки в тело ответа.

+0

Как это возможно, что он работает в Chrome (который использует XmlHttpRequest)? Является ли это только ограничением XDomainRequest или ошибкой внедрения Chrome? –

+0

У меня, к сожалению, сейчас нет доступа к окну Windows, но я могу убедиться, что Chrome действительно возвращает тело. Обратите внимание, что XDomainRequest IE - это другой объект, кроме XmlHttpRequest (уровень 2) в Chrome, поэтому им не нужно соглашаться на поведение. IE10 будет поддерживать XmlHttpRequest и CORS. – monsur

+0

Firefox работает так же, как Chrome. Я могу получить ответ даже в случае ошибки. –

Смежные вопросы