Мой php-сервер всегда возвращает код состояния 200. Но возвращает с http-кодами локально

У меня есть php API, который должен возвращать ответы с кодами состояния. Но возвращает только код ответа 200. Это работает при локальном тестировании с Xampp, но не на сервере развертывания в реальном времени. На сервере развертывания я пробовал:

  • заголовок(':',true,$code);
  • http_response_code(404);
  • header("Статус: 404 не найдено");
  • header('X-PHP-Response-Code: '.$code, true, $code);

На основе предыдущих ответов о переполнении стека

public function echoResponse($code, $response){ 

    header(':',true,$code);  
    echo json_encode($response);
    exit();
}

Я продолжаю получать код ответа 200.


person jireh    schedule 23.05.2019    source источник
comment
Код состояния 200 означает, что все в порядке. Если ошибки нет, это код ответа по умолчанию, который будет указан в заголовке. Какого поведения вы ожидаете от API?   -  person dwpu    schedule 23.05.2019
comment
Я хочу, чтобы мой API возвращал код состояния 400.   -  person jireh    schedule 23.05.2019
comment
У вас была ошибка в журнале ошибок php? Вы можете попробовать использовать функцию http_response_code() или header("HTTP/1.0 400");. Чтобы убедиться, что заголовок был отправлен, вы можете проверить его с помощью функции headers_sent().   -  person dwpu    schedule 23.05.2019
comment
заголовок был фактически установлен, когда вы повторяете http_response_code(); он возвращает установленный код, но ответ по-прежнему отправляется с кодом состояния 400   -  person jireh    schedule 23.05.2019
comment
Возможный дубликат PHP: как отправить код ответа HTTP?   -  person miken32    schedule 23.05.2019
comment
Я попробовал все, что в посте. Я установил код ответа. при эхо он возвращает установленный ответ, но все равно отправляет обратно клиенту с кодом состояния 200   -  person jireh    schedule 23.05.2019
comment
Вам не нужно повторять http_response_code(), оно будет отправлено автоматически.   -  person dwpu    schedule 24.05.2019


Ответы (1)


Это должно работать так: header('HTTP/1.1 500 Internal Server Error');

person ImMaax    schedule 23.05.2019