新在Symfoob娱乐下载ny 3.3:弃用X-Status-Code
2017年3月16日,·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
提供的
詹姆斯Halsall
在# 19822。
有时在Symfony应用程序中处理异常时,您可能想要更改原始HTTP响应状态代码(例如返ob娱乐下载回404年
错误而不是原始的5 xx
代码)。
当然,你不应该做这个没有一个很好的理由,但Symfony允许您通过设置一个特殊的ob娱乐下载X-Status-Code
HTTP头信息:
1 2 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\组件\HttpKernel\事件\GetResponseForExceptionEvent;使用ob娱乐下载\组件\HttpFoundation\响应;公共函数onKernelException(GetResponseForExceptionEvent美元事件){美元异常=美元事件- >getException ();/ / 500是原始状态代码;但最终用户将得到404美元响应=新响应(“……”,500年,(“X-Status-Code”= >404年]);/ /……美元事件- >setResponse (美元响应);}
的X-Status-Code
标题不是一个标准的HTTP的特性,所以它一直困扰着我们。在Syob娱乐下载mfony 3.3中,我们终于决定摆脱它,坚持处理HTTP响应的标准方法。
而不是X-Status-Code
头,现在你可以设置状态代码像往常一样在响应中,然后调用新的allowCustomResponseCode ()
方法告诉内核使用事件的反应对象上设置的响应代码:
1 2 3 4 5 6 7 8 9 10
公共函数onKernelException(GetResponseForExceptionEvent美元事件){美元异常=美元事件- >getException ();美元响应=新响应(“……”,404年);/ /……美元事件- >allowCustomResponseCode ();美元事件- >setResponse (美元响应);}
发表在#生活在边缘
评论
从我的头顶,我可以想象一个场景类似于GitHub,,当你试图访问一个私人库您没有访问你会得到一个404,而不是实际的401/403。所以我猜你可能会用它来防止信息泄漏。我可能尝试ResponseListener第一相反,所以可能还是有点不自然的例子。
另一个用例是为了避免出错时返回5 xx状态代码(并返回200状态)所以谷歌爬虫不惩罚网站如果有一个突然上升在应用程序错误。
Andreas Leathley
说3月17日,2017年在22:28
实际上是“allowCustomResponseCode()”有必要吗?或响应代码将Symfony返回如果方法不叫——除了404ob娱乐下载年响应对象的代码吗?
我总是以为Symfony会使用响应对象的响应ob娱乐下载代码。
我总是以为Symfony会使用响应对象的响应ob娱乐下载代码。
是的,叫allowCustomResponseCode()需要在这种特殊情况下(当然不需要设置响应状态码在正常情况下)。然而,在https://github.com/symfony/ob娱乐下载symfony/issues/22019你可以阅读更多关于该特性和法比安说,没人应该在他们的应用程序使用此功能。
Alex Rock is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now