|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Всем, привет! Есть код (не мой), сейчас появилась задача запретить некое действие над объектом, который в коде получен по id. Например, Task с неким статусом isRunning == true. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Меня самого смущает такая конструкция метода, но если её оставлять, то есть не переписывать, чтобы возвращался какой-нибудь объект в виде json со статусом(success=true/false), с кодом(например 200), со значение(value) в виде объекта, ну и с чем-нибудь. То какой тогда здесь подставить код будет правильнее? (КАКОЙ_ТО_КОД_ОШИБКИ в коде выше) Список здесь https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletResponse.html Или вообще это всё дичь, мрак и прошлый век и так больше не делают и всё нафиг переписать? )))) Сам предполагаю, что ближе всего SC_NOT_ACCEPTABLE (406), но описание у него кажется, что не подходит сюда. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 22:07 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
упс, я тут что-то в коде намутил)) return new ErrorMessage(e.getMessage()); когда e не определена, писал прямо тут в поле сообщения. Но это не сильно важно, простите) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 22:09 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Nixic, верните ResponseEntity с кодом 451, допустим, или 423. И вообще, всегда возвращайте ResponseEntity ) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 22:46 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Nixic, Если это какой нибудь rest api, то вполне можно отдать json с кодом 200 и уже в json есть стандарт описания ошибки. Кратко и длинно. Это если запрет входит в бизнес логику работы клиента. Т.е. обычное дело. Иначе по безопасности можно вернуть код ошибки не из HTTP.Error для исключения взлома и подбора, брутфорса. Ну и http.error тоже можно. ... Можно ведь сказать что запрет ни при чем и это вовсе не запрет а статус Занято)) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 07:39 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Petro123Nixic, Если это какой нибудь rest api, то вполне можно отдать json с кодом 200 и уже в json есть стандарт описания ошибки. Кратко и длинно. Это если запрет входит в бизнес логику работы клиента. Т.е. обычное дело. Иначе по безопасности можно вернуть код ошибки не из HTTP.Error для исключения взлома и подбора, брутфорса. Ну и http.error тоже можно. ... Можно ведь сказать что запрет ни при чем и это вовсе не запрет а статус Занято)) по-моему, я впервые понял Петро и да, лучше ограничить кол-во HttpStatus`ов, которые может вернуть сервис и не использовать экстравагантные. Самое простое, изучить чей нибудь публичный api. Для примера, можно взять api github`а. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 09:42 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Озверинпо-моему, я впервые понял))) Прогресс у кого, у тебя или у меня?))))) Наверно у IT индустрии) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 10:24 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
NixicСам предполагаю, что ближе всего SC_NOT_ACCEPTABLE (406), но описание у него кажется, что не подходит сюда. Нет, 406 явно неприемлемо для данного случая, оно строго про заголовки запроса (и вообще в основном только про Accept). Ваш случай скорее 409 Conflict. У вас действие "запрещено в данном состоянии объекта". Может быть еще 423/424, но я бы сам взял 409. Ну и объект с описанием/статусом/чем угодно в ответе тоже будет полезно вернуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 22:15 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Спасибо всем, было интересно почитать варианты и мнения :) В итоге, не поленился и переписал контроллеры(хорошо, что их там не много) и сделал возврат объекта со статусом 200 и полем success = false. Обработал на клиенте, кинул в интерфейс соответствующее сообщение из этого же объекта в респонсе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 19:30 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
NixicСпасибо всем, было интересно почитать варианты и мнения :) В итоге, не поленился и переписал контроллеры(хорошо, что их там не много) и сделал возврат объекта со статусом 200 и полем success = false. Обработал на клиенте, кинул в интерфейс соответствующее сообщение из этого же объекта в респонсе :) Уж не знаю, хорошо ли, т.к. возврат http 200 при ошибке - довольно холиварная тема см. ответ на so . ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 22:23 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
cossack5http 200 при ошибкестакан полуналитый или полупустой? Можно спорить вечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 22:49 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Nixic возврат объекта со статусом 200 и полем success = false. Звучит как "Я жив, но умер." ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 09:26 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
SQL2008Nixic возврат объекта со статусом 200 и полем success = false. Звучит как "Я жив, но умер."))). Не. Оптимистично: "я сходил в магазин. Хлеба нету")))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 09:38 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
SQL2008Nixic возврат объекта со статусом 200 и полем success = false. Звучит как "Я жив, но умер." Я жив, но умер. И вот на всякий случай мои данные: Код: javascript 1. 2. 3. 4.
На самом деле, если писать правильно, то надо было сразу на клиенте писать что-то, что обрабатывало бы ошибки, но так как здесь хрен пойми что и как, то хотя бы так, уже лучше чем было) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 11:27 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Nixic Код: javascript 1.
почему не: ID:134 и всё? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 11:58 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Petro123Nixic Код: javascript 1.
почему не: ID:134 и всё? Чтобы потом по ID не отправлять запрос еще раз на сервер если понадобятся данные :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 16:59 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
К слову, респонс в value может возвращать значение в json формате сформированного из java объекта любого типа. SuccessResponseImpl Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 17:03 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Petro123Nixic, Если это какой нибудь rest api, то вполне можно отдать json с кодом 200 и уже в json есть стандарт описания ошибки. Кратко и длинно. Это если запрет входит в бизнес логику работы клиента. Т.е. обычное дело. Иначе по безопасности можно вернуть код ошибки не из HTTP.Error для исключения взлома и подбора, брутфорса. Ну и http.error тоже можно. ... Можно ведь сказать что запрет ни при чем и это вовсе не запрет а статус Занято)) да отлично ты запросил ентити а тебе прилетает 200 и нот фаунд в бади. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 17:55 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
andreykaT, Ты в моем ответе способен прочитать 4 варианта проектов? А против того что ты восстал (Одного из 4-х) использует яндекс и гугл api. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:42 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Боженька миловал от юза яндекса и гугла. зато наюзался амазона. может у яндекса и гугла пишут профи но амазон пишут проклятые кривые индусы. гугл думаю тоже. яндекс наверное нет. у них такие зарплаты что индусы туда работать не пойдут. так что так себе пример ) зы. я не восстал но в холиваре на тему 200 саксесс фалс я, пожалуй, займу сторону против хотя браузерщики например, рыдают если им присылаешь 404 и что-то в бади. они говорят что распарсить или обработать "правильно" не могут потому что 404 у них "по особому" обрабатывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:37 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
NixicИли вообще это всё дичь, мрак и прошлый век и так больше не делают и всё нафиг переписать? )))) Сам предполагаю, что ближе всего SC_NOT_ACCEPTABLE (406), но описание у него кажется, что не подходит сюда.406 - это когда клиент в заголовке Accept что-то написал, а сервер ему так ответить не может, больше 409 подходит, однако как выше написали лучше 200 с правильным пейлоадом: коды ошибок в HTTP - это прошлый век и они реально никакие кейсы не покрывают ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 20:14 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
... но статусные коды HTTP-протокола позволяют работать (произвольному) балансировщику нагрузки, а выпендрёж с "ошибка в теле успешного отклика" - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 06:08 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, а по каким статусам балансировщик что-то балансировать собирается? Я здесь сходу могу назвать разве что 503, толку от которого не особо-то и много: чтобы взять и перебросить клиента с одной ноды на другую, он либо stateless должен быть, либо состояние между нодами должно синхронизироваться, а больше никаких полезных кодов нет (ну разве что 404 может означать что ничего не задеплоено и нужно валить отсюда, а значит в приложении 404 уже нельзя использовать). С другой стороны, если думать о том, что если сервер сервер что-то не смог обработать, то нужно возвращать 4xx, то возникают некие проблемы с определением того, какой именно статус нужно возвратить, ну вот примеры: - клиент прислал невалидные данные (условно не соответствуют схеме) - это какой код? - мы запрос можем обработать, но от клиента требуется подтверждение (заголовок или еще что) - а это какой код? Заход с другой стороны: мы делаем нагрузочное тестирование и все наши "выдуманные" 4xx в отчетах будут фигурировать как ошибки, тоже так себе тема. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 07:44 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловBasil A. Sidorov, С другой стороны, если думать о том, что если сервер сервер что-то не смог обработать, то нужно возвращать 4xx, то возникают некие проблемы с определением того, какой именно статус нужно возвратить, ну вот примеры: - клиент прислал невалидные данные (условно не соответствуют схеме) - это какой код? . сто раз обсуждали и еще 1 раз обсудить или вы в самом деле не знаете, что принято возвращать? (на всякий пожарный, поясню, надо возвращать то, что у вас описано в api). Если же брать общую практику, то : - валидный json, но что-то не так со схемой - 422 анпроцессибл энтити - просто ожидаем json, а пришел какой-то xml - 400 бэд реквест - дальше уже вариации на тему Андрей Панфилов- мы запрос можем обработать, но от клиента требуется подтверждение (заголовок или еще что) - а это какой код? - 403 как бе для таких случаев ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 08:59 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловЗаход с другой стороны: мы делаем нагрузочное тестирование и все наши "выдуманные" 4xx в отчетах будут фигурировать как ошибки, тоже так себе тема. Это какой-то надуманный кейс - если у вас проходит нагрузачное тестирование то и логи у вас не продакшн будут. Или в чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 09:00 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловNixicИли вообще это всё дичь, мрак и прошлый век и так больше не делают и всё нафиг переписать? )))) Сам предполагаю, что ближе всего SC_NOT_ACCEPTABLE (406), но описание у него кажется, что не подходит сюда.406 - это когда клиент в заголовке Accept что-то написал, а сервер ему так ответить не может, больше 409 подходит, однако как выше написали лучше 200 с правильным пейлоадом: коды ошибок в HTTP - это прошлый век и они реально никакие кейсы не покрывают если отказываться от "одного" рест подхода, то и методы типа post, put, delete - тоже нет смысла использовать. Переходите на json rpc - не парьтесь: все запросы post с нагрузкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 10:01 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Озверинсто раз обсуждали и еще 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.02.2019, 10:07 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, 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.02.2019, 10:09 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, 400 и 422 для rest - эквивалентные ошибки, не вижу проблем в этом. Но проблема в том, в связи с тем, что надо отличать причину бэд реквеста, 400 используют, когда вообще прислали ересь, а 422 - когда разобрать получилось, но схема не та. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 10:16 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Озверин 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.02.2019, 10:19 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловОзверин 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.02.2019, 10:25 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловОзверин 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.02.2019, 10:29 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
ОзверинHTTP 403 is returned when the client is not permitted access to the resource for some reason besides authenticationНу, это и есть авторизация, а кейс изначально такой: "мы это выполним, но выполнятся оно будет долго, может вызвать рак мозга и пр., продолжить или нет?" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 10:31 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловОзверин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.02.2019, 10:34 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Чтобы вы точно не продожали, ибо в английский -так себе: автор 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.02.2019, 10:36 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov... но статусные коды HTTP-протокола позволяют работать (произвольному) балансировщику нагрузки, а выпендрёж с "ошибка в теле успешного отклика" - нет. при том что они более приложение-независимые и имеют хоть какой-то стандарт. а парсить джейсоны на предмет ошибок сервера - ну это такое. скажем так, сложное занятие. зачем тем более сочинять костыли когда всё уже придумано до нас. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:06 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Озверин, ты прям соап ща описал. только такой немного стейтлесс. добро пожаловать на зад. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:07 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
andreykaTОзверин, ты прям соап ща описал. только такой немного стейтлесс. добро пожаловать на зад. не, это json rpc - добро пожаловать в хорошо забытое старое. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:09 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
andreykaTпредмет ошибок серверасабж не только об ошибках сервера. Но и про БЛ. HTTP.error констант тебе не хватит. Вот и переходи плавно от ошибок транспорта к ошибкам чуть сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:14 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Petro123andreykaTпредмет ошибок серверасабж не только об ошибках сервера. Но и про БЛ. HTTP.error констант тебе не хватит. Вот и переходи плавно от ошибок транспорта к ошибкам чуть сложнее. подход подразумевает, что к статусу ответа всегда можно добавить какое-нить сообщение, в котором можно уже что-нибуть и раскрыть. А безопасность говорит, что статуса должно хватить, чтобы не клиенты не занимались всякой злочинной ерундой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:19 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
ОзверинТо есть другими словами, вы только что узнали, что сообщество использует 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.02.2019, 11:23 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Озверин, Я ему к тому что есть 4 разных подхода. Он почему то гонит только к одному - нельзя дать 200 если внутри json ошибки. Я лично все 4 уважаю) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:37 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, вы не можете перевести обычную фразу? Тот факт, что кто-то использует(а точнее, одна из комманд, и то - не факт, ибо этому описанию сто лет в обед) - подвтерждает, что там написано что-то другое?:) https://cloud.google.com/storage/docs/json_api/v1/status-codes Тут от авторизации до ratelimit`а ошибки. Что из этого должно следовать? Что 403 используют только для доступ запрещен? Ну да-ну да. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:41 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей Панфиловреализовывать бизнес-логику на 4xx - это все равно что реализовывать бизнес-логику на исключениях. к чему это вообще? Есть определенный подход, рест, у него есть определенные варианты использования, есть наработанные практики...причем тут замечание какого-то человека о том, что там можно , а что нет? Уже используются эти исключения в очень большом кол-ве мест, и это не зависит от вашего мнения по этому поводу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:43 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Озверинвы не можете перевести обычную фразу?Я могу даже больше перевести, но вся суть отражается одним словом: forbidden - запрещено, в приведенном мной сценарии никаких запретов нет - нужно подтвердить действие. ОзверинТут от авторизации до ratelimit`а ошибки. Что из этого должно следовать? Что 403 используют только для доступ запрещен? Ну да-ну да. а по вашему ratelimit не относится к тарифному плану и, как следствие, к авторизации? Озверинк чему это вообще? Есть определенный подход, рест, у него есть определенные варианты использования, есть наработанные практики...причем тут замечание какого-то человека о том, что там можно , а что нет? Уже используются эти исключения в очень большом кол-ве мест, и это не зависит от вашего мнения по этому поводу. Со стороны инфраструктуры (не приложения), клиент, постоянно генерирующий ошибки, выглядит довольно подозрительно, а с вашим подходом получается примерно так: ну тут пофиг что от кого-то идет постоянный трафик с 403 - это не хакер, это у нас бизнес-логика так реализована. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:50 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей Панфилова по вашему ratelimit не относится к тарифному плану и, как следствие, к авторизации? вряд ли хоть один нормальный человек скажет, что рейтлимит относится к авторизации ;) Но вы можете продолжать нести демагогоию на этот счет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:54 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
ОзверинАндрей Панфилова по вашему ratelimit не относится к тарифному плану и, как следствие, к авторизации? вряд ли хоть один нормальный человек скажет, что рейтлимит относится к авторизации ;) Но вы можете продолжать нести демагогоию на этот счет. p.s. к слову, рейтлимит - это бизнеслогика, потому что на нем завязана оплата. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:55 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
С дубов вы, что ли, все попадали? Причин, по которым вводятся лимиты на скорость скачивания и частоту запросов - вагон и маленькая тележка. Авторизация и тарифные планы в этих причинах - не на первом месте. Мягко говоря. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:57 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Basil A. SidorovС дубов вы, что ли, все попадали? Причин, по которым вводятся лимиты на скорость скачивания и частоту запросов - вагон и маленькая тележка. Авторизация и тарифные планы в этих причинах - не на первом месте. Мягко говоря. не, это пятница, а человеку хочется дискуссий...видимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 11:58 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Озверинp.s. к слову, рейтлимит - это бизнеслогика, потому что на нем завязана оплата.В каком это месте рейтлимит бизнеслогика-то? - аутентификация: мы тебя знать не знаем, давай свои креденшелы мы тебя проверим - авторизация: мы тебя знаем, но вот сюда тебе нельзя, потому что мы так решили т.е. "вы превысили порог количества обращений (в секунду, и пр.) - несите бабки" - это авторизация, прилетает сообщение оно от инфраструктуры , а бизнес-логика сюда натягивается из отдела продаж гугла, а не из моего приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 12:08 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловОзверинp.s. к слову, рейтлимит - это бизнеслогика, потому что на нем завязана оплата.В каком это месте рейтлимит бизнеслогика-то? - аутентификация: мы тебя знать не знаем, давай свои креденшелы мы тебя проверим - авторизация: мы тебя знаем, но вот сюда тебе нельзя, потому что мы так решили т.е. "вы превысили порог количества обращений (в секунду, и пр.) - несите бабки" - это авторизация, прилетает сообщение оно от инфраструктуры , а бизнес-логика сюда натягивается из отдела продаж гугла, а не из моего приложения. а повторите запрос через 10 секунд - это что:? Тоже авторизация? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 12:25 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Озверина повторите запрос через 10 секунд - это что:? Тоже авторизация?это может быть и "503 Server Busy" в зависимости от. Вот смотрите какой мой взгляд на обсуждаемый рейтлимит, я определяю авторизация это или нет по довольно простому критерию: можно это свести к условным пользователям и группам или нет, т.е. есть у нас ресурс, мы говорим: пользователи таких-то групп имеют туда доступ, а пользователи таких не имеют (исключающие права доступа - все равно права доступа), теперь делаем триггер, который при превышении лимита либо исключает пользователя из "хорошей" группы либо наоборот включает в "плохую" - с точки зрения тарификации такая реализация имеет место быть, а это значит, что тарификация свелась с авторизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 12:37 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, сову на глобус можно натягивать сколь угодно долго. Но мы обсуждаем, что в 403 может быть заложена НЕ только авторизация. Об этом ясно сказано. Именно таким образом(не только для авторизации) его используют крупные игроки вроде гугла гитхаба или амазона. да, с вашей с точки зрения, рейтлимит - это авторизация, но..если так на это смотреть, то если брать тот же амазон, он говорит, что запросы с 4xx - не следует повторять БЕЗ изменений. Именн в этом случае как раз можно натянуть рейтлимит на авторизацию, в случае же с гуглом они возаращают 403 в том числе и с ошибкой: повторите через 5 секунд. Потому, как Пользуетесь вы - конечно, очень интересно..но в масштабах интернета - малозначимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 12:48 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
ОзверинАндрей Панфилов, сову на глобус можно натягивать сколь угодно долго. Но мы обсуждаем, что в 403 может быть заложена НЕ только авторизация. Об этом ясно сказано. Именно таким образом(не только для авторизации) его используют крупные игроки вроде гугла гитхаба или амазона. да, с вашей с точки зрения, рейтлимит - это авторизация, но..если так на это смотреть, то если брать тот же амазон, он говорит, что запросы с 4xx - не следует повторять БЕЗ изменений. Именн в этом случае как раз можно натянуть рейтлимит на авторизацию, в случае же с гуглом они возаращают 403 в том числе и с ошибкой: повторите через 5 секунд. Потому, как Пользуетесь вы - конечно, очень интересно..но в масштабах интернета - малозначимо. в общем же случае 403 говорит о ДОСТУПЕ по тем или иным причинам. И вот в таком виде это звучит очень логично. Сюда ложится и рейтлимит, и отсутствующий заголовок агента и авторизация с правами доступа. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 13:07 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
ОзверинНо мы обсуждаем, что в 403 может быть заложена НЕ только авторизация. Об этом ясно сказано.С вашей стороны пример-то будет, где регламентируется 403 и это никаким образом не похоже на авторизацию? А то пока как-то все про права доступа и квоты, а бизнес-логика на 403 где? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 13:40 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, причем тут бизнес логика? Права доступа - тоже часть бизнес логики, на всякий пожарный, или может ею являться. ВСЕ перечисленные примеры включают в себя рейтлимиты. Мало что ли? Есть описание? Я приводил в пример гитхаб, который 403 возвращает если нет юзер агента. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 13:43 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
ОзверинАндрей Панфилов, причем тут бизнес логика? Права доступа - тоже часть бизнес логики, на всякий пожарный, или может ею являться.проверка возможности доступа - это авторизация, в HTTP для неуспешной авторизации выделен статус 403, к моему примеру он никак не подходит: если даже и рассматривать подтверждение действия как авторизацию, то здесь клиент должен авторизовывать действие, а не сервер, т.е. сервер должен обратиться к клиенту, а не наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 14:01 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловОзверинАндрей Панфилов, причем тут бизнес логика? Права доступа - тоже часть бизнес логики, на всякий пожарный, или может ею являться.проверка возможности доступа - это авторизация, в HTTP для неуспешной авторизации выделен статус 403, к моему примеру он никак не подходит: если даже и рассматривать подтверждение действия как авторизацию, то здесь клиент должен авторизовывать действие, а не сервер, т.е. сервер должен обратиться к клиенту, а не наоборот. вы недавно сказали, что невозможность доступа(сервер занят) - надо бе вернуть другой код. Невозможность доступа может быть по миллиону причин, отличных от авторизации, потому 403й и выделен, И ИМЕНО ПОТОМУ так и описан в стандартею не понимаю, почему вы решили повторить в сотый раз. Я как бе на этом по этому вопросу сверну дискуссию, ибо вы делаете ее бессмысленной. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 14:10 |
|
Какой код ответа вернуть в HttpServletResponse, если действие над объектом запрещено?
|
|||
---|---|---|---|
#18+
Озверинвы недавно сказали, что невозможность доступа(сервер занят) - надо бе вернуть другой код. Невозможность доступа может быть по миллиону причин, отличных от авторизации, потому 403й и выделен, И ИМЕНО ПОТОМУ так и описан в стандартею ну опять, для "Server Busy" разработчики протокола решили сделать выделенный статус, просто потому что чрезмерная нагрузка на сервер может быть вполне инфраструктурной проблемой, и запрос до приложения, которое может доступы проверять, может даже не дойти. Озверинне понимаю, почему вы решили повторить в сотый раз. Я как бе на этом по этому вопросу сверну дискуссию, ибо вы делаете ее бессмысленной.Да толку здесь обсуждать что-либо никакого нет, набор кодов HTTP столь скуден, что натягивать на них бизнесовое API смысла нет никакого, зато имеем кучу ложных срабатываний: красные сообщения в браузере, неправильные логи, клиент должен парсить пейлоад, прилетающий из разных источников и пр. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 14:21 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2121477]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 173ms |
0 / 0 |