如果代码为204,则PHP标头不显示自定义消息

如果代码为204,则PHP标头不显示自定义消息,php,http-headers,Php,Http Headers,我正在编写和API,并抛出和异常,该异常调用一个方法来组合要返回的头。如果没有内容,我抛出一个带有自定义消息和代码204的异常 throw new Exception("my message", 204); 以及组成标头的方法 if ($status_codes[$code] !== null) { $status_string = $code . ' ' . $status_codes[$code]; header($_SERVER['SERVER_PROTOCOL'] .

我正在编写和API,并抛出和异常,该异常调用一个方法来组合要返回的头。如果没有内容,我抛出一个带有自定义消息和代码204的异常

throw new Exception("my message", 204);
以及组成标头的方法

if ($status_codes[$code] !== null) {
    $status_string = $code . ' ' . $status_codes[$code];
    header($_SERVER['SERVER_PROTOCOL'] . ' ' . $status_string, true, $code);

    if ($code != 200) die(json_encode(["code" => $code, "message" => $message]));

}
问题是,当我使用代码204时,我只显示响应的状态,即
204无内容
,但不显示带有代码的消息。我尝试使用代码400,它显示了自定义消息

204响应不能包括消息体,因此总是由头字段后的第一个空行终止


需要更多的话吗?:)

谢谢你的链接,现在我明白了。那么,当从数据库中找不到任何数据时,我是否可以使用另一个适合于返回消息的代码?这是正确的,您可以。不过,如果您坚持使用204,那么任何兼容的api客户机都会知道不需要文本消息,所以这本身也很好