Ответ об ошибках Cross Origin 4xx заблокирован - PullRequest
1 голос
/ 18 марта 2011

Я делаю перекрестный запрос с использованием XMLHttpRequest level2.Проблема в том, что если сервер возвращает код ошибки, например, 409, браузер не позволяет мне получить доступ к тексту ответа, который возвращает сервер.Так что, если сервер возвращает 409 с сообщением: «вам не разрешено делать это снова», я получаю только 409 на стороне клиента, но xhr.responseText пусто ...

это частьспецификация или я пропускаю заголовок или что-то?

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

Чтобы добавить к тому, что сказал monsur, спецификация не совсем ясна в этом конкретном случае использования, но если вы посмотрите на раздел 7.3. Имея дело со статусом запроса перекрестного происхождения, он инструктирует разработчиков «не раскрывать никакой дополнительной информации о запросе» для различных ошибок. Хотя это может показаться чрезмерно консервативным, вы также можете утверждать, что это хорошая / безопасная лучшая практика. Смотри: http://www.w3.org/TR/cors/#cors-api-specification-response

2 голосов
/ 19 марта 2011

Я считаю, что это результат чрезмерно консервативной реализации CORS в браузере. Я даже заметил в Safari, что statusCode равен 0, когда выдается ошибка, а не фактическое состояние HTTP. Я не думаю, что вы можете что-то сделать, пока браузеры не исправят дело onError. Если у вас есть контроль над сервером, вы всегда можете вернуть HTTP-статус 200, а затем поместить код ошибки в тело. JSON-RPC (http://json -rpc.org /) делает это, если вы хотите использовать что-то более стандартное.

...