Коды состояния 400 и 417 HTTP/1.1, не может выбрать который

SyncToy от Microsoft powertoys набор мог бы быть потенциальной фиксацией. Это сохранит файлы в нескольких местоположениях синхронизировавшими, как говорят между файловым сервером и конкретной папкой на Вашем жестком диске, таким образом избавляющем от необходимости волноваться об ограничении соединения. Вы не должны должны быть волноваться о сетевой стабильности с тех пор, если существует отклонение, которое она будет просто синхронизировать после того, как она восстановит.

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

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

http://www.microsoft.com/downloads/en/details.aspx?familyid=C26EFA36-98E0-4EE9-A7C5-98D0592D8C52&displaylang=en

3
задан 23 May 2017 в 15:41
3 ответа

Если параметры для запроса GET неверны, канонически нужно отправить обратно либо 404 (не найдено), либо 200 (ОК).

Способ использования RESTful GET запросы - это запрос ресурса (получение чего-либо). Следовательно, если необходимые параметры не соответствуют существующему ресурсу (потому что они неполны), вы можете точно сказать, что ресурс, запрошенный в URI, не найден.

На практике, если вы хотите избежать таких вещей, как игнорирование браузерами свою страницу 404 и заменяя их собственной (я смотрю на IE 9 и 10), вы можете использовать 200. Если вы считаете свое приложение ресурсом, 200 подходит; вы запросили приложение, и оно вернуло результат (это была ошибка, но не на уровне HTTP). Однако это использование не очень RESTful.

2
ответ дан 3 December 2019 в 05:05

Ошибка 417 должна возникать только тогда, когда клиент отправил заголовок HTTP Expect , который сервер не смог выполнить, что не имеет отношения ни к какому путь к «ожидаемым входам» приложения в запросе. Не используйте его.

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

Ни то, ни другое не является действительно подходит для сбоя проверки в логике приложения, хотя я полагаю, что 400 немного более уместно.

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

Я просто использовал заголовок 403 Forbidden, когда ожидаемые значения не были найдены в $ _GET, но, если подумать, на самом деле это не действие, требующее входа в систему (не для этого, конечно, пользователь должен войти в систему, чтобы просмотреть панель администратора в первую очередь), это больше похоже на ввод неожиданного значения.

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

Все это предполагает, что вы хотите вернуть код ответа 4xx .. что имеет смысл для API ... но для HTML-страницы, обращенной к пользователю, вы, скорее всего, захотите отправить 200 с информацией об ошибке в теле.

s больше похоже на ввод неожиданного значения.

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

Все это предполагает, что вы хотите вернуть код ответа 4xx .. что имеет смысл для API ... но для HTML-страницы, обращенной к пользователю, вы, скорее всего, захотите отправить 200 с информацией об ошибке в теле.

s больше похоже на ввод неожиданного значения.

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

Все это предполагает, что вы хотите вернуть код ответа 4xx .. что имеет смысл для API ... но для HTML-страницы, обращенной к пользователю, вы, скорее всего, захотите отправить 200 с информацией об ошибке в теле.

4
ответ дан 3 December 2019 в 05:05

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

Соответствующий rfc здесь - rfc2616 . Вы можете использовать 400, но затем вам нужно предоставить клиенту возможность изменять данные из rfc

10.4.1 400 Bad Request

Запрос не может быть понят сервером из-за неправильного формата синтаксис. Клиенту НЕ СЛЕДУЕТ повторять запрос без модификации.

Что касается 417, RFC сообщает

10.4.18 417 Ошибка ожидания

Ожидаемое значение, указанное в поле заголовка запроса Expect (см. раздел 14.20) не может быть встречен этим сервером, или, если сервер является прокси, у сервера есть недвусмысленные доказательства того, что запрос не может быть выполнен сервером следующего перехода.

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

2
ответ дан 3 December 2019 в 05:05

Теги

Похожие вопросы