REST http код состояния для контента, который требует аутентификации? - PullRequest
1 голос
/ 15 июля 2009

У меня есть веб-приложение, которое использует шаблоны URL RESTful. В настоящее время, если пользователь пытается получить доступ к странице, где он должен пройти аутентификацию, он просто ничего не возвращает. Это хорошая практика, чтобы вернуть код состояния HTTP в этом случае? Буду ли я использовать 403 или другой?

Ответы [ 4 ]

3 голосов
/ 15 июля 2009

Вам следует отправить ответ с кодом статуса HTTP.

Я бы не отправил 403 Forbidden назад, хотя, как указано в спецификации для этого кода состояния:

Сервер понял запрос, но отказывается выполнять это. Авторизация не поможет и НЕ ДОЛЖЕН повторяться запрос

Вместо этого вернуть 401 Несанкционированный код состояния. См. Это для получения дополнительной информации о кодах состояния:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

То, как я делаю это с Джерси, - это отправить ответ со статусом и затем включить строковую сущность, которая содержит удобочитаемое сообщение, например,

Response response = Response.status(Status.PRECONDITION_FAILED).entity(
                    new String("Incorrect " + id + " [" + id + "]")).build();

Это будет отображаться для клиента. Я выбрасываю исключение Джерси WebApplicationException, которое переносит этот ответ.

1 голос
/ 15 июля 2009

Если у них нет разрешений, верните 401, чтобы дать им возможность ответить на запрос аутентификации, или 403, если вы этого не хотите.

Restlet 1.1 и далее возвращает 403, тогда как более ранние версии возвращают 401. 403 представляется более корректным, если не обязательно более полезным.

0 голосов
/ 16 июля 2009

lol ... в только что созданной реализации API REST я вернул код состояния 401 с телом ответа, которое гласило «до свидания». Был первым, на что жаловался парень, взаимодействующий с API. Я все еще думаю, что "до свидания" сказал все это; )

0 голосов
/ 15 июля 2009

Это зависит. Конечно, вы действительно должны что-то вернуть, просто чтобы иметь достойный опыт работы с клиентами. Если вы хотите дать им возможность аутентификации в этот момент, вы можете вернуть 401, и клиент узнает, что передал учетные данные, используя стандартную аутентификацию. Однако, если вы предпочитаете, чтобы они проходили аутентификацию через какой-то другой механизм (какой-то URL-адрес входа в систему, а затем устанавливал cookie или что-то в этом роде), то возвращение 403 - это, вероятно, путь.

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