如何在 ZF2 中使用自定义(非标准)HTTP 状态代码

Mes*_*Ops 2 http httpresponse zend-framework2

我正在尝试498 - Token Invalid在 Zend Framework 2 应用程序中使用自定义 http 状态代码发送响应。这显然不起作用,因为标准 Zend Response 类不允许自定义 http 代码。

所以我创建了自己的响应类来处理这个 http 代码并在我的操作中返回它:

$response = new CustomResponse();
$response->setStatusCode(498); //basic zend response objects throws InvalidArgumentException

return $response;
Run Code Online (Sandbox Code Playgroud)

虽然没有抛出异常,但浏览器说它返回了 500 错误。

如何让这个工作?

edi*_*igu 5

ZF2 中的HTTP 响应类严格遵循状态代码的RFC 2616。这是一个很好的做法,setStatusCode()当您传递未知状态代码时,方法将抛出异常。

无论如何,您不需要创建自定义响应对象来返回非标准的 HTTP 状态代码。有一种setCustomStatusCode()方法可以满足此要求。

在任何控制器操作中试试这个:

public function myAction()
{
   $response = $this->getResponse();
   $response->setCustomStatusCode(498);
   $response->setReasonPhrase('Invalid token!');
   return $response;
}
Run Code Online (Sandbox Code Playgroud)