Какой код статуса https использовать, когда у пользователя есть доступ к URL-адресу, но нет параметров запроса? - PullRequest
2 голосов
/ 13 апреля 2011

Добрый день,

Какой код статуса http следует использовать, когда запрашивающая сторона имеет доступ к этому URL, но имеет неправильные параметры запроса.

Скажем так:

Как пользователь 100, я могу получить доступ http://example.com/bankaccount/get?id=100

Однако я не должен видеть банковский счет другого пользователя, скажем, через http://example.com/bankaccount/get?id=200.

Какой код статуса HTTP следует использовать?

Ответы [ 3 ]

5 голосов
/ 13 апреля 2011

Если доступ запрещен, вернуть 403 :

Сервер понял запрос, но отказывается его выполнить. […] Если метод запроса не был HEAD и сервер желает сообщить, почему запрос не был выполнен, он ДОЛЖЕН описать причину отказа в объекте. Если сервер не желает предоставлять эту информацию клиенту, вместо него можно использовать код состояния 404 (не найден).

Но я не вижу смысла явно указывать идентификатор, так как вы уже сейчас используете идентификатор пользователя. Так что /bankaccount/get должно быть достаточно в этом случае.

1 голос
/ 13 апреля 2011

В вашем примере я бы отправил 302, перенаправив его на страницу с ошибкой, или 200 с пользовательской страницей с ошибками прямо здесь. Это будет самая удобная версия.

Edit: Если вы хотите выбрать что-то в области кодов состояния 4xx, убедитесь, что веб-сервер предоставляет соответствующую страницу ошибки. Обычный пользователь не будет рад видеть белый экран с надписью «403 - Запрещено». 403 с пользовательской страницей ошибок - хорошее решение этой проблемы.

0 голосов
/ 13 апреля 2011

Я голосую за 403 - Запрещено, поскольку это законный запрос, но не разрешен для текущего пользователя.

Если имена параметров запроса были неправильными, с другой стороны, вероятно, это должно быть 404.

...