У меня есть веб-приложение, которое использует шаблоны URL RESTful. В настоящее время, если пользователи пытаются получить доступ к странице, где они должны быть аутентифицированы, она просто ничего не возвращает. Хорошая практика - вернуть код статуса HTTP в этом случае? Я бы использовал 403 или другой?Код статуса HTTP для контента, для которого требуется аутентификация?
ответ
Вы должны отправить ответ с кодом состояния HTTP.
Я бы не послать 403 Forbidden назад, хотя, как спецификация определяет для этого код состояния:
Сервер понял запрос, но отказывается выполнять его. Авторизация не поможет и запрос НЕ ДОЛЖЕН быть повторен
Return Несанкционированное код статуса 401 вместо. Смотрите это для получения дополнительной информации о кодах состояния:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Как мне это сделать с Джерси отправить ответ со статусом и затем включить объект String, который содержит читаемое сообщение человека, например
Response response = Response.status(Status.PRECONDITION_FAILED).entity(
new String("Incorrect " + id + " [" + id + "]")).build();
Это будет отображаться клиенту. Я бросаю исключение Джерси WebApplicationException, которое завершает этот ответ.
Спасибо, Jon, это было очень полезно. –
Если у них нет прав доступа 401, чтобы дать им возможность ответить на вызов аутентификации или 403, если вы этого не хотите.
Restlet 1.1 и далее возвращают 403, а более ранние версии возвращают 401. 403, по-видимому, считаются более правильными, если не обязательно более полезными.
зависит от цели. Вы действительно должны что-то вернуть, конечно, чтобы иметь приличный клиентский опыт. Если вы хотите дать им возможность пройти аутентификацию в этот момент, вы можете вернуть 401, и клиент будет знать, чтобы передавать учетные данные, используя стандартную проверку подлинности. Если, однако, вы предпочтете, чтобы они аутентифицировались через какой-то другой механизм (некоторый URL-адрес для входа, а затем установили cookie или somesuch), тогда возвращение 403 - это, вероятно, путь.
lol ... в реализации REST API. Я только что построил. Я вернул код состояния 401 с телом ответа, который читал «до свидания». Было первое, о чем жаловался парень, взаимодействующий с API. Я все еще думаю, что «до свидания» все это сказал;)
- 1. Код статуса HTTP для PUT
- 2. Правильный код статуса HTTP для формы входа?
- 3. Открытие url от android, для которого требуется базовая аутентификация
- 4. Код статуса HTTP 302
- 5. Код статуса HTTP для неразрешенного URL
- 6. Код статуса HTTP для «успеха с ошибками»?
- 7. Код статуса HTTP для недопустимого формата
- 8. Код статуса HTTP для временно недоступных страниц
- 9. Код статуса HTTP 500 для NotFoundException
- 10. Код состояния статуса Http
- 11. Правильный код статуса http
- 12. Аутентификация требуется для gems.contribsys.com
- 13. Базовая аутентификация HTTP: требуется помощь
- 14. Код статуса перенаправления HTTP
- 15. Какой http-код для удалённого контента?
- 16. статус HTTP, если требуется повторная аутентификация
- 17. Код статуса HTTP для «Больше пользовательского ввода, пожалуйста?»
- 18. Когда отправлять код статуса HTTP?
- 19. Код статуса Http с libcurl?
- 20. Является ли код статуса HTTP 426 Обновление Требуется только означало, что требуется обновление до безопасного канала?
- 21. Apache - требуется весь запрещенный код состояния HTTP
- 22. RESTful ajax - какой код статуса HTTP для "item not found"?
- 23. Почему YouTube возвращает код статуса HTTP 200 для удаленных видео?
- 24. Код статуса HTTP для «никогда не будет существовать»
- 25. Код статуса HTTP для базы данных не работает
- 26. Как получить код статуса HTTP для удаленного домена в php?
- 27. какой код статуса http мы должны рассматривать для мертвой ссылки
- 28. угловых ЯШИ: Установить код статуса HTTP для отмененных запросов
- 29. Ожидаемого код статуса HTTP для действия на инвалиду ресурса
- 30. KSOAP2: получить код статуса http для ответа веб-службы
REST не имеет отношения к шаблонам URI. «RESTful url patterns» - полная бессмыслица. Я подозреваю, что ваш API - это просто RPC. – aehlke