Какой лучший способ сообщить приложению Ajax об ошибках на сервере? - PullRequest
0 голосов
/ 05 июня 2011

Привет, я работаю над приложением с Java, так как это серверный язык, а для клиентской части я использую Ajax.Но я довольно новичок в приложениях Ajax, поэтому мне нужно было несколько мнений по проблеме, с которой я столкнулся.Я использую Spring Security для своих служб аутентификации и авторизации, и, читая весенние форумы, мне удалось интегрировать Spring Security с приложением Ajax таким образом, чтобы запросы ajax можно было перехватывать и предпринимать соответствующие действия.Вот проблема: каков наилучший способ сообщить приложению ajax о том, что на сервере произошла ошибка.Что я делал до сих пор, так это то, что по соглашению я делаю случайные ошибки http 500+.например, для запроса входа в систему я возвращаю 550, и 551 для другой проблемы и так далее.Но я думаю, что это не правильный подход к этому.Каков наилучший подход к решению этой ситуации?

Ответы [ 3 ]

4 голосов
/ 05 июня 2011

Если стандартные коды ошибок HTTP (например, 401 Unauthorized) достаточно богаты, используйте их. Лучше всего не создавать свои собственные коды ошибок HTTP, они должны быть исправлены. Если вам нужно получить больше информации, вы должны вернуть более богатый объект в теле ответа (сериализованный как, например, JSON или XML) и проанализировать объект на стороне клиента.

2 голосов
/ 05 июня 2011

По моему опыту, составление собственных кодов ошибок HTTP - не лучший подход.

  • Мне известны стеки протоколов HTTP на стороне клиента и на сервере, которые трактуют нестандартные коды состояния HTTP как ошибки протокола.

  • Нестандартный код может привести к путанице в сообщениях об ошибках, если они будут обрабатываться как не-AJAX-ответы.

Аналогичным образом, использование части фразы «причина» может быть проблематичным. Некоторые стеки на стороне сервера не позволяют вам установить его, а некоторые стеки на стороне клиента отбрасывают его.

Мой предпочтительный способ сообщения об ошибках в ответ на запрос AJAX - это отправка стандартного кода (например, 400 - BAD REQUEST) с телом ответа в формате XML, JSON или в виде простого текста, в котором содержится подробная информация об ошибке. (Обязательно установите заголовок типа содержимого ответа ...)

1 голос
/ 05 июня 2011

Если это ошибка в вашем приложении или хак, от которого вы хотите защититься, просто верните общую ошибку доступа.Не сообщайте подробно об ошибке на клиенте, поскольку она может быть использована хакером для лучшего понимания того, как злоупотреблять вашим API.В любом случае это может сбить с толку обычных пользователей.

Если это будет нормальное поведение приложения, возможно, было бы лучше убедиться в том, что у вас произошел изящный сбой, позволив повторить попытку позже (если это имеет смысл), повторно подключиться или повторно подтвердить подлинность.Вы должны, по крайней мере, распознать, является ли это отключенной ошибкой или ошибкой недостаточных прав, и показать пользователю симпатичное объяснение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...