Установить код состояния ответа [дубликат]


этот вопрос уже есть ответ здесь:

у меня есть вызов API, для которого мне нужно иметь возможность запускать некоторые проверки и потенциально возвращать различные коды состояния. Мне не нужны пользовательские представления или что-то еще, мне просто нужно вернуть правильный код. Если пользователь не прошли соответствующие учетные данные, мне нужно вернуть статус 401. Если они не отправили поддерживаемый формат запроса, мне нужно вернуть статус 400.

потому что это API, все, что я действительно хочу сделать, это установить статус ответа и выйти с простым, глупым сообщением о том, почему запрос не удался (возможно, используя exit). Достаточно, чтобы сделать работу, но я не смог заставить это работать правильно. Я пробовал использовать PHP header() и (Это все в контроллере), но хотя я получаю сообщение о выходе, заголовок показывает 200 OK статус.

используя код ниже, я получаю сообщение, но заголовок не установлен. Чего мне не хватает?

  if( !$this->auth_api() ) {
    header( '401 Not Authorized' );
    exit( 'Not authorized' );
  }
6 82

6 ответов:

PHP

The header()

начиная с PHP 5.4 вы можете использовать http_response_code.

http_response_code(404);

Это позаботится о настройке правильных заголовков HTTP.

Если вы используете PHP

  1. обновление.
  2. использовать этой http_response_code функции реализовано в PHP.

Я не думаю, что ты задание заголовок правильно, попробуйте это:

header('HTTP/1.0 401 Unauthorized');

почему бы не использовать Класс Ответа Торты? Вы можете установить код состояния ответа просто так:

$this->response->statusCode(200);

затем просто отобразите файл с сообщением об ошибке, которое лучше всего подходит для JSON.

у меня была такая же проблема с CakePHP 2.0.1

Я пробовал использовать

header( 'HTTP/1.1 400 BAD REQUEST' );

и

$this->header( 'HTTP/1.1 400 BAD REQUEST' );

однако ни один из них не решил мою проблему.

Я в конечном итоге решить его с помощью

$this->header( 'HTTP/1.1 400: BAD REQUEST' );

после этого никаких ошибок или предупреждений от php / CakePHP.

*редактировать: в последние $this->header вызов функции, я ставлю двоеточие (:) между 400 и текстом описания ошибки.

как написано ранее, но для начинающих, как я не забудьте включить возврат.

$this->response->statusCode(200);
return $this->response;