Можно ли не отображать сообщение об ошибке при сбое проверки на стороне сервера, если требуется JavaScript? - PullRequest
1 голос
/ 19 декабря 2011

У нас есть форма, для работы которой абсолютно необходим JavaScript, и проверка выполняется на стороне клиента.Проверка также выполняется на стороне сервера, но было бы очень сложно показать ошибки при сбое проверки на стороне сервера.

Поскольку у пользователя нет шансов не иметь JavaScript, можно ли просто потерпеть неудачу с ошибкой HTTP?Единственный способ, которым они не пройдут проверку на стороне сервера, заключается в том, что они либо являются злонамеренным пользователем, либо не могут использовать JavaScript, и в этом случае они все равно не будут использовать форму.

Ответы [ 4 ]

2 голосов
/ 19 декабря 2011

Я говорю, что это нормально, за исключением для определенного класса ошибок.

Некоторые ошибки проверки не являются результатом злого умысла, но просто не могут быть проверены и обнаружены в любое другое время, кроме тех случаев, когда форма фактически обрабатывается. Это может быть из-за ограниченного ресурса, который необходимо зарезервировать, но не может быть («это имя пользователя уже используется»), или из-за некоторой исправимой ошибки на стороне сервера («Процессор кредитной карты восходящего направления не отвечает. потом"). Для таких ошибок вам обязательно должно быть передано какое-то сообщение об ошибке пользователю. Трудно представить дизайн, в котором отправка подобных ошибок обратно была бы невозможна. По крайней мере, вы можете сделать это:

  1. Отправьте свой ответ об ошибке HTTP (4xx или 5xx в зависимости от характера ошибки)
  2. В текст вашего ответа включите сообщение об ошибке в некоторую структуру данных, которую ваш javascript может легко понять. (JSON или XML, или даже text / plain! Не забудьте установить тип mime.)
  3. Пусть обработчик ошибок для запроса javascript вставит текст ошибки в видимое место в вашей форме (например, вверху или рядом с кнопкой отправки).

Однако самое важное - это выполнить проверку на стороне сервера и не доверять клиенту. Вы уже делаете это, поэтому, если вы хотите сделать что-то еще, это вопрос совершенства и создания наилучшего пользовательского опыта. Иногда это требует непропорционально больших усилий, и это нормально.

0 голосов
/ 19 декабря 2011

Это нормально, если вы уверены, что проверка на стороне клиента и проверка на стороне сервера эквивалентны.На этой ноте я считаю, что некоторые из них могут поддерживать синхронизацию кода проверки на стороне клиента и кода проверки на стороне сервера (особенно если они написаны на разных языках, что всегда имеет место, если вы не используете node.js или GWt).Если у кого-то есть какое-либо решение, которое было бы замечательно.

Однако, если есть определенные проверки, которые можно выполнить только на стороне сервера (например, ограничение уникальности базы данных), важно показать пользователюих действия на стороне клиента провалились.Это зависит от самого приложения, хотя.

0 голосов
/ 19 декабря 2011

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

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

0 голосов
/ 19 декабря 2011

Лично я думаю, что это хорошо.

Особенно, если предыдущий шаг по использованию сайта также не работал бы вообще без Javascript, поэтому пользователь не мог бы перейти к рассматриваемой странице без Javascript, тогда огромные затраты на то, чтобы заставить его работать без Javascript, впустую усилия. Например, в веб-формах .Net для входа требуется Javascript, поэтому любые страницы внутри защищенной области сайта, на мой взгляд, могут предполагать, что Javascript доступен.

Мне любопытно, что думают другие люди.

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