Какой код состояния я должен вернуть для запроса без AJAX только для URL-адреса AJAX?

Если URL-адрес запрашивается не используя AJAX, какой код состояния должен быть возвращен? 400?

Ответ 1

Я не уверен, что вы действительно помогаете кому-либо, охраняя эту ценность. Я бы предпочел, чтобы философия пыталась отправить полезные данные во всех случаях. Тем не менее, это не так много, чтобы представить похожие ситуации, когда нам нужна политика. Например, предположим, что у нас есть служба, которая может возвращать JSON или XML в зависимости от типа mime, возможно, лучше вернуть четкий код ответа, если указан неожиданный тип mime.

W3 сказать

Коды 4xx предназначены для случаев в котором клиент, похоже, имеет ошибочно, и коды 5xx для случаев в котором сервер знает, что сервер ошибся. Невозможно различают эти случаи в целом, поэтому разница только информационная.

Раздел тела может содержать документ, описывающий ошибку в человеческом читаемая форма. Документ находится в MIME формат и может быть только в текстовом / text/html или один для форматов указанных в запрос.

И поэтому кажется очевидным, что ответ должен быть 4xx, это клиент, выдающий неверный запрос. Я бы пошел с 400 BAD REQUEST и удостоверился, что возвращенный текст объясняет, почему запрос считается плохим.

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

Ответ 2

Я думаю, 403 Forbidden лучше.

501 Not Implemented не подходит, потому что ресурс реализован, но просто не подходит для такого запроса.

400 Bad Request тоже не является хорошим выбором, потому что это означает, согласно спецификации, что "запрос не мог быть понят сервером из-за неправильного синтаксиса", что здесь не так.

Ответ 3

Я бы пошел 400 Bad Request, так как он имеет смысл не повторять запрос.

Если это не так, 418 I'm a teapot, просто чтобы смутить их:)