Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3247
Озверин
сто раз обсуждали и еще 1 раз обсудить или вы в самом деле не знаете, что принято возвращать? (на всякий пожарный, поясню, надо возвращать то, что у вас описано в api). Если же брать общую практику, то :
- валидный json, но что-то не так со схемой - 422 анпроцессибл энтити
- просто ожидаем json, а пришел какой-то xml - 400 бэд реквест
- дальше уже вариации на тему


Не в курсе что вы там обсуждали и с кем. 422 - это вообще про webdav, а RFC говорит что нужно 400 (в 2616 было иначе, да):

https://tools.ietf.org/html/rfc7231#section-6.5.1
6.5.1. 400 Bad Request

The 400 (Bad Request) status code indicates that the server cannot or
will not process the request due to something that is perceived to be
a client error (e.g., malformed request syntax, invalid request
message framing, or deceptive request routing).



Озверин
Андрей Панфилов
- мы запрос можем обработать, но от клиента требуется подтверждение (заголовок или еще что) - а это какой код?


- 403 как бе для таких случаев


403 - это исключительно про права доступа, не нужно ему приписывать что-то другое. Более того, ответ 200 с сервера гарантирует, что пейлоад, идущий с ним, правильного формата и соответствует API, а 4xx может не только приложение выкидывать, а вообще что угодно, так что смысла морочиться с 4xx нет никакого.
15 фев 19, 10:07    [21810235]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов,

HTTP 403 provides a distinct error case from HTTP 401; while HTTP 401 is returned when the client has not authenticated, and implies that a successful response may be returned following valid authentication, HTTP 403 is returned when the client is not permitted access to the resource for some reason besides authentication. This other reason needs to be acted upon before re-requesting access to the resource.
15 фев 19, 10:09    [21810238]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов, 400 и 422 для rest - эквивалентные ошибки, не вижу проблем в этом. Но проблема в том, в связи с тем, что надо отличать причину бэд реквеста, 400 используют, когда вообще прислали ересь, а 422 - когда разобрать получилось, но схема не та.
15 фев 19, 10:16    [21810248]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3247
Озверин
HTTP 403 provides a distinct error case from HTTP 401; while HTTP 401 is returned when the client has not authenticated, and implies that a successful response may be returned following valid authentication, HTTP 403 is returned when the client is not permitted access to the resource for some reason besides authentication. This other reason needs to be acted upon before re-requesting access to the resource.
вы авторизацию от аутентификации отличаете?
15 фев 19, 10:19    [21810251]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
Озверин
HTTP 403 provides a distinct error case from HTTP 401; while HTTP 401 is returned when the client has not authenticated, and implies that a successful response may be returned following valid authentication, HTTP 403 is returned when the client is not permitted access to the resource for some reason besides authentication. This other reason needs to be acted upon before re-requesting access to the resource.
вы авторизацию от аутентификации отличаете?



HTTP 403 is returned when the client is not permitted access to the resource for some reason besides authenticatio
15 фев 19, 10:25    [21810263]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
Озверин
HTTP 403 provides a distinct error case from HTTP 401; while HTTP 401 is returned when the client has not authenticated, and implies that a successful response may be returned following valid authentication, HTTP 403 is returned when the client is not permitted access to the resource for some reason besides authentication. This other reason needs to be acted upon before re-requesting access to the resource.
вы авторизацию от аутентификации отличаете?


мне нравятся ваши вопросы, потому: вы в английский не умеете, да?
15 фев 19, 10:29    [21810268]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3247
Озверин
HTTP 403 is returned when the client is not permitted access to the resource for some reason besides authentication
Ну, это и есть авторизация, а кейс изначально такой: "мы это выполним, но выполнятся оно будет долго, может вызвать рак мозга и пр., продолжить или нет?"
15 фев 19, 10:31    [21810272]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
Озверин
HTTP 403 is returned when the client is not permitted access to the resource for some reason besides authentication
Ну, это и есть авторизация, а кейс изначально такой: "мы это выполним, но выполнятся оно будет долго, может вызвать рак мозга и пр., продолжить или нет?"


с каких пор some reason стало только авторизацией?

автор
However, a request might be forbidden for reasons
unrelated to the credentials.
15 фев 19, 10:34    [21810275]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Чтобы вы точно не продожали, ибо в английский -так себе:


автор
An origin server that wishes to "hide" the current existence of a
forbidden target resource MAY instead respond with a status code of
404 (Not Found).


То есть другими словами, вы только что узнали, что сообщество использует 403 в том числе и для того, чтобы указать,что, к примеру, что не хватает какого-то хедера. Может и не использовать, но гитхаб, к примеру - так делает. но они то кто?
15 фев 19, 10:36    [21810279]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
andreykaT
Member

Откуда:
Сообщений: 2192
Basil A. Sidorov
... но статусные коды HTTP-протокола позволяют работать (произвольному) балансировщику нагрузки, а выпендрёж с "ошибка в теле успешного отклика" - нет.

при том что они более приложение-независимые и имеют хоть какой-то стандарт. а парсить джейсоны на предмет ошибок сервера - ну это такое. скажем так, сложное занятие. зачем тем более сочинять костыли когда всё уже придумано до нас.
15 фев 19, 11:06    [21810331]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
andreykaT
Member

Откуда:
Сообщений: 2192
Озверин,

ты прям соап ща описал. только такой немного стейтлесс. добро пожаловать на зад.
15 фев 19, 11:07    [21810335]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
andreykaT
Озверин,

ты прям соап ща описал. только такой немного стейтлесс. добро пожаловать на зад.


не, это json rpc - добро пожаловать в хорошо забытое старое.
15 фев 19, 11:09    [21810340]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
andreykaT
предмет ошибок сервера
сабж не только об ошибках сервера. Но и про БЛ.
HTTP.error констант тебе не хватит.
Вот и переходи плавно от ошибок транспорта к ошибкам чуть сложнее.
15 фев 19, 11:14    [21810350]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Petro123
andreykaT
предмет ошибок сервера
сабж не только об ошибках сервера. Но и про БЛ.
HTTP.error констант тебе не хватит.
Вот и переходи плавно от ошибок транспорта к ошибкам чуть сложнее.


подход подразумевает, что к статусу ответа всегда можно добавить какое-нить сообщение, в котором можно уже что-нибуть и раскрыть. А безопасность говорит, что статуса должно хватить, чтобы не клиенты не занимались всякой злочинной ерундой.
15 фев 19, 11:19    [21810364]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3247
Озверин
То есть другими словами, вы только что узнали, что сообщество использует 403 в том числе и для того, чтобы указать,что, к примеру, что не хватает какого-то хедера. Может и не использовать, но гитхаб, к примеру - так делает. но они то кто?
Я не в курсе что вы там только что узнали (вероятно что в некоторых случаях вместо 403 можно 404 посылать, что само по себе несет некий смысл: 403 подразумевает что ресурс-таки существует, и соответственно раскрывает информацию, впрочем именно это в RFC и написано), однако трактовать фразу "мы запретили доступ по какой-то только нам известной причине" трактовать как "в любой непонятной ситуации слать 403", скажем там, несколько фривольно: существует некоторая общепринятая практика, и здесь 403 - это именно ошибки авторизации, примеры:
- google: https://developers.google.com/analytics/devguides/reporting/core/v3/errors
- amazone: https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#RESTErrorResponses
- microsoft: https://support.microsoft.com/en-au/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0

реализовывать бизнес-логику на 4xx - это все равно что реализовывать бизнес-логику на исключениях.
15 фев 19, 11:23    [21810374]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Озверин,
Я ему к тому что есть 4 разных подхода.
Он почему то гонит только к одному - нельзя дать 200 если внутри json ошибки.
Я лично все 4 уважаю)
15 фев 19, 11:37    [21810393]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов, вы не можете перевести обычную фразу? Тот факт, что кто-то использует(а точнее, одна из комманд, и то - не факт, ибо этому описанию сто лет в обед) - подвтерждает, что там написано что-то другое?:)

https://cloud.google.com/storage/docs/json_api/v1/status-codes

Тут от авторизации до ratelimit`а ошибки. Что из этого должно следовать? Что 403 используют только для доступ запрещен? Ну да-ну да.
15 фев 19, 11:41    [21810401]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
реализовывать бизнес-логику на 4xx - это все равно что реализовывать бизнес-логику на исключениях.


к чему это вообще? Есть определенный подход, рест, у него есть определенные варианты использования, есть наработанные практики...причем тут замечание какого-то человека о том, что там можно , а что нет? Уже используются эти исключения в очень большом кол-ве мест, и это не зависит от вашего мнения по этому поводу.
15 фев 19, 11:43    [21810405]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3247
Озверин
вы не можете перевести обычную фразу?
Я могу даже больше перевести, но вся суть отражается одним словом: forbidden - запрещено, в приведенном мной сценарии никаких запретов нет - нужно подтвердить действие.

Озверин
Тут от авторизации до ratelimit`а ошибки. Что из этого должно следовать? Что 403 используют только для доступ запрещен? Ну да-ну да.
а по вашему ratelimit не относится к тарифному плану и, как следствие, к авторизации?

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

Со стороны инфраструктуры (не приложения), клиент, постоянно генерирующий ошибки, выглядит довольно подозрительно, а с вашим подходом получается примерно так: ну тут пофиг что от кого-то идет постоянный трафик с 403 - это не хакер, это у нас бизнес-логика так реализована.
15 фев 19, 11:50    [21810413]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
а по вашему ratelimit не относится к тарифному плану и, как следствие, к авторизации?


вряд ли хоть один нормальный человек скажет, что рейтлимит относится к авторизации ;)
Но вы можете продолжать нести демагогоию на этот счет.
15 фев 19, 11:54    [21810420]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Озверин
Андрей Панфилов
а по вашему ratelimit не относится к тарифному плану и, как следствие, к авторизации?


вряд ли хоть один нормальный человек скажет, что рейтлимит относится к авторизации ;)
Но вы можете продолжать нести демагогоию на этот счет.


p.s. к слову, рейтлимит - это бизнеслогика, потому что на нем завязана оплата.
15 фев 19, 11:55    [21810421]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 9178
С дубов вы, что ли, все попадали?
Причин, по которым вводятся лимиты на скорость скачивания и частоту запросов - вагон и маленькая тележка.
Авторизация и тарифные планы в этих причинах - не на первом месте. Мягко говоря.
15 фев 19, 11:57    [21810425]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Basil A. Sidorov
С дубов вы, что ли, все попадали?
Причин, по которым вводятся лимиты на скорость скачивания и частоту запросов - вагон и маленькая тележка.
Авторизация и тарифные планы в этих причинах - не на первом месте. Мягко говоря.


не, это пятница, а человеку хочется дискуссий...видимо.
15 фев 19, 11:58    [21810426]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3247
Озверин
p.s. к слову, рейтлимит - это бизнеслогика, потому что на нем завязана оплата.
В каком это месте рейтлимит бизнеслогика-то?
- аутентификация: мы тебя знать не знаем, давай свои креденшелы мы тебя проверим
- авторизация: мы тебя знаем, но вот сюда тебе нельзя, потому что мы так решили

т.е. "вы превысили порог количества обращений (в секунду, и пр.) - несите бабки" - это авторизация, прилетает сообщение оно от инфраструктуры, а бизнес-логика сюда натягивается из отдела продаж гугла, а не из моего приложения.
15 фев 19, 12:08    [21810437]     Ответить | Цитировать Сообщить модератору
 Re: Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
Озверин
p.s. к слову, рейтлимит - это бизнеслогика, потому что на нем завязана оплата.
В каком это месте рейтлимит бизнеслогика-то?
- аутентификация: мы тебя знать не знаем, давай свои креденшелы мы тебя проверим
- авторизация: мы тебя знаем, но вот сюда тебе нельзя, потому что мы так решили

т.е. "вы превысили порог количества обращений (в секунду, и пр.) - несите бабки" - это авторизация, прилетает сообщение оно от инфраструктуры, а бизнес-логика сюда натягивается из отдела продаж гугла, а не из моего приложения.


а повторите запрос через 10 секунд - это что:? Тоже авторизация?
15 фев 19, 12:25    [21810451]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Java Ответить