Email or username:

Password:

Forgot your password?
Top-level
Alexey Skobkin

@rayslava
Если тебе сервер вернул 401 на запрет бизнес-логики, то это странно. Потому что это код про аутентификацию. А если уж говорить про то как нередко делают, то "запретила логика" - это авторизация. И тогда это скорее 403 если уж маппить на HTTP.

7 comments
rayslava

@skobkin да какая разница. Ну вот вернул он мне 401 , если я не залогинен.
Но это же не ошибка сервиса и не ошибка клиента, это ошибка юзера.
С моей точки зрения должно вернуться что-то типа 200 "Залогинься, мразь"

А 401 должно вернуться, когда «Что ты за приложение? Я тебя не звал! Иди на селф-хостед»!

⚛️Revertron

@rayslava Ну не, мне кажется, не важно кто сгенерировал ошибку внутри твоего сервера, надо возвращать понятные HTTP-коды.
Их не зря придумывали.

@skobkin

Alexey Skobkin

@Revertron @rayslava
Ну это зависит от парадигмы опять же.
Коды изначально придумывали для другого.
Но потом, например, появлялись штуки вроде REST, которые подразумевают, что этот фреймворк может использоваться и для виртуальных бизнес-ресурсов, а не только физических файлов в ФС.

Alexey Skobkin

@rayslava
Ну вот штука в том, что во многих ситуациях HTTP стал частью протокола/соглашения API.
Неотъемлемой. Перестав быть только транспортом.

И в общем-то транспортом если уж совсем угорать будет TCP. А HTTP - это вполне себе "фреймворк" для других слоёв вроде приложения стал.

Если воспринимать API расширением HTTP, а не приложением использующим как транспорт - всё уже не так однозначно.

tuenut

@skobkin @rayslava на Вики написано, что это application layer, не транспорт.
В rfc тоже

tuenut

@rayslava @skobkin а кто должен сгенерировать 401?
Я понимаю так (я могу ошибаться), если аутентификацию проверяет сервис и аутентификация не предоставлена/не прошла, сервис должен послать нахер. Почему для этого не использовать код ошибки, который существует, при том, что это именно ошибка обработки запроса - ресурс закрыт аутентификацией?
В то время как 200 сообщает о том, что запрос успешно обработан, то есть выполнена некоторая полезная нагрузка.

tuenut

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

Go Up