Выбор кода статуса HTTP - PullRequest
       27

Выбор кода статуса HTTP

2 голосов
/ 03 апреля 2012

У меня серьезная проблема с моим веб-приложением при получении данных через API из источников, и контент подвергается цензуре / удалению из-за того, как Google его интерпретирует.По данным Google на панели моего веб-мастера:

Ошибка сервера 18 216 ошибок

Не найдено 13 333 ошибки

Не соблюдено 9 ошибок

Другие 190 ошибок

В живой версии моего приложения я показываю возвращенные ошибки, просто делая (я использую codeigniter):

show_error($e->getMessage());

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

Сейчас я работаю над новым выпуском, но до этого мне было интересно, какой код состояния HTTP будет подходящим для исправления:

204 НетСодержимое

404 Не найдено

410 Пропал

какой-то другой?

ОБНОВЛЕНИЕ

Нет проблем скод или сервер, код состояния HTTP 500 генерируется из-за show_error($e->getMessage());, и я хочу использовать его так же, нодобавив код ошибки сам: show_error($e->getMessage(), 'error_general', 503);

, потому что по умолчанию установлено 500:

function show_error($heading, $message, $template = 'error_general', $status_code = 500)

UPDATE2

Просто чтобы прояснить ситуацию,Я не хочу отправлять код состояния HTTP, связанный с ограниченным доступом / контентом, но отправляю код, связанный с сообщением об ошибке, внутри $e->getMessage(), который в 90% случаев содержит сообщение об ошибке, в котором говорится, что контент был удален или подвергнут цензуре.

С учетом вышесказанного я спрашиваю: какой код статуса HTTP следует использовать при отображении сообщения об ошибке, в котором говорится, что содержимое было удалено / подвергнуто цензуре или было установлено как недоступное по причине X.

Ответы [ 2 ]

1 голос
/ 04 апреля 2012

Если я правильно вас понимаю, пользователь (или пользователь-агент) пытается получить доступ к чему-то, что раньше было, но для всех целей и задач больше недоступно. Он может существовать где-то на вашем сервере, но что касается Интернета, он не существует.

Если это так, у вас есть несколько вариантов, в зависимости от того, что вы хотите сообщить пользователю:

  1. 403 - Запрещено. Это можно использовать, если вы хотите, чтобы пользователь знал, что такой ресурс существует, но вы не можете его получить. Это означает, что аутентификация не поможет.
  2. 410 - Ушел. Это значит, да, здесь что-то было, но больше нет, и оно не вернется. Используйте его только в том случае, если вы уверены, что условие является постоянным.
  3. 404 - Не найдено. Это более общее назначение, чем 410. Если вы не уверены, подходит ли 410, вернитесь к 404.

И 403, и 410 сообщают пользователю, что это какой-то законный путь, но вы никогда не сможете получить ресурс. Для всех трех вы можете включить объяснение в тексте ответа (то есть ваше сообщение об ошибке).

0 голосов
/ 03 апреля 2012

Ошибка 5xx указывает на то, что она имеет какое-то отношение к серверу, что, безусловно, имеет место.При рассмотрении различных кодов состояния (http://httpstatus.es/), я бы предложил 503: сервер в данный момент недоступен.

...