Я разрабатываю приложение, которое действует как HTTP-прокси для обслуживания файлов с внешнего ресурса. Фактически он загружает файл с внешнего ресурса, проверяет вирусы и, если файл не заражен, возвращает файл клиенту.
Моя проблема в том, в случае, если файл заражен, какой код состояния HTTP должна возвращать моя служба? Я полагаю, что любой тип кодов ошибок 4xx не подходит для этой ситуации, потому что этот класс кода предназначен для ошибок клиента.
Ошибка 502 (плохой шлюз) более уместна? Есть ли какой-либо стандарт, регулирующий эту ситуацию?





Коды ответа HTTP предназначены только для обработки определенных условий http, поэтому я не думаю, что есть правильный ответ как таковой. Но некоторые возможности ...
204 - «Сервер успешно обработал запрос и не возвращает никакого контента»
403 - «Запрос был действительным, но сервер отказывает в действии»
Думаю, вы правы, маэстромарко: 502 Bad Gateway. Прочтите спецификации здесь:
The 502 (Bad Gateway) status code indicates that the server, while acting as a gateway or proxy, received an invalid response from an inbound server it accessed while attempting to fulfill the request.
Ваш прокси действует как шлюз, и он получил то, что считает недействительным, поскольку в нем есть вирус.
Это не ошибка класса 4xx, потому что что бы клиент ни изменил в запросе, результатом все равно будет ошибка.
См. Также этот диаграмма решений