如何在Symfony 2 Response对象中返回419 HTTP状态

时间:2014-01-23 21:47:00

标签: api rest symfony

我目前正在研究Symfony 2中的HTTP API,我已经为其实现了OAuth2密码凭据以进行身份​​验证。在身份验证时,客户端收到两个令牌,一个访问权限和一个刷新令牌。

不知何故,我需要能够通知客户端访问令牌不再有效,并且必须使用刷新令牌来获取新的访问令牌。

我已经浏览了HTTP代码列表[1],对我而言,419身份验证超时状态似乎是最合适的。但是,当我在Response对象中使用它时,我实际上会收到500状态:

return new Response("OK", 419);

结果:

$ curl -X GET http://local.api

< HTTP/1.1 500 Internal Server Error
< Date: Thu, 23 Jan 2014 21:34:39 GMT
* Server Apache/2.4.6 (Ubuntu) is not blacklisted
< Server: Apache/2.4.6 (Ubuntu)
< X-Powered-By: PHP/5.5.3-1ubuntu2.1
< Cache-Control: no-cache
< X-Debug-Token: b7c386
< X-Debug-Token-Link: /app_dev.php/_profiler/b7c386
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=UTF-8

我得到的印象是Response对象似乎不支持此代码(查看类中定义的常量列表),但是从Response类代码本身我不能检测任何不允许我发送419的逻辑。

我目前正在回归所需的511网络身份验证,但我更喜欢使用419。我怎么能这样做?

[1] http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

1 个答案:

答案 0 :(得分:-1)

查看Response constructor,如果状态代码无效,则会抛出InvalidArgumentException异常。您将需要使用不同的状态代码(请查看Symfony中有效代码的类常量)