HTTP: Какой ответ нужно вернуть, когда требуется смена пароля? - PullRequest
0 голосов
/ 09 января 2020

Я работаю в системе, в которой я могу создать пользователя с системным администратором, выйти из системы, а затем войти в систему с новым пользователем, которого я создал. Затем он возвращается ко мне с окном «пожалуйста, сбросьте свой пароль перед первым входом в систему» ​​и дает мне форму для изменения моего пароля.

Я инженер по автоматизации, которому необходимо автоматизировать этот процесс. Когда я отправил сообщение для входа в систему, я получил ответ, который кажется мне очень ошибочным:

HTTP/1.1 500 Internal Server Error

content-type: text/plain

allow: false

content-length: 69

x-envoy-upstream-service-time: 144

date: Tue, 07 Jan 2020 13:10:03 GMT

server: istio-envoy


Internal Server Error:

Status message: Bad Request. status code: 400 

Я просто хочу услышать ваши идеи, что должен дать разработчик в этом случае? Каков наилучший способ сделать это?

Возвращается ли 200 ok с заголовком определения статуса:

status: success\reset_pw_needed\etc...

будет хорошим отношением?

Или Есть ли какой-нибудь адекватный код среди семейств 3XX или 4XX?

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Ваш клиент должен обращать внимание на полезную нагрузку HTTP-ответа. Коды состояния, как и заголовки, представляют собой метаданные, которые описывают семантику полезной нагрузки для универсальных компонентов, чтобы они могли вести себя разумно.

Например, если мы делали это с веб-сайт, и вы хотели сказать человеку, что требуется смена пароля, затем вы пишете это в документе html. Браузер отобразит документ, человек прочитает его и узнает, что делать.

Код состояния предназначен для браузера , а также кеша и любых промежуточных компонентов, которые могут читать запрос и ответ.

Коды состояния являются частью унифицированного интерфейса, то есть семантика кода одинакова для всех ресурсов.

Использование 200 OK в тех случаях, когда сервер отказал в удовлетворении запроса, не хорошая идея, поскольку основное значение 200 состоит в том, что запрос был успешно выполнен .

Важно правильно различать коды классов 2xx и 4xx из-за аннулирования кэша .

Ваша лучшая ставка, вероятно, 403 Запрещено

сервер понял запрос, но отказывается его авторизовать. Сервер, который хочет опубликовать c, почему запрос был запрещен, может описать эту причину в полезной нагрузке ответа (если есть).

0 голосов
/ 09 января 2020

Почему вы думаете, что вам нужно использовать код статуса, чтобы указать это? Недостаточно чисел в диапазоне 200-299 для обозначения каждого специфичного для приложения c статуса в ответе HTTP, и я действительно sh перестану пытаться вставить свои статусы приложений в код состояния HTTP только потому, что он выглядит круто, и некоторые из больших мальчиков делают это.

Определенно не используйте фразу причины для этого, поскольку это не должно интерпретироваться машинами.

Просто используйте 200, чтобы указать текущий запрос выполнен успешно, и в ваше тело ответа включите дополнительное поле, чтобы указать вызывающему абоненту обновить свой пароль. В любом случае это не то, что должна делать потребляющая программа, но что бы то ни было.

Если вас беспокоят потребители fle sh и крови, тогда просто используйте соответствующий вывод HTML, чтобы указать это.

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