首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Cakephp中指定HTTP状态代码?

如何在Cakephp中指定HTTP状态代码?
EN

Stack Overflow用户
提问于 2009-07-08 22:26:38
回答 10查看 30K关注 0票数 31

在我的控制器中,我检查一个条件,看看用户是否被允许做一些事情。如果检查失败,我想向浏览器发回一个403。我如何在Cakephp中做到这一点?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-07-08 23:35:51

编辑-这个问题已经很久了,涵盖了不同版本的CakePHP框架。以下是每个答案适用于哪个版本的摘要。别忘了投票选出最有帮助的解决方案。

错误处理程序3.x和4.x -使用响应对象(Roberto's answer)

  • CakePHP 2.x -使用异常( solution

  • CakePHP 1.x -仅设置标头(此答案)

EDIT #2 - Mark37添加了CakePHP 2.x的more detailed answer

EDIT #3 -为CakePHP添加的解决方案。(2018年5月: CakePHP 3.5进行了一些函数重命名,solution by Roberto仍然有效。)

通过查看上一条注释中的相关API code,您似乎可以调用Controller::header($status)来输出头而无需重定向。在您的例子中,正确的用法很可能是:

代码语言:javascript
运行
复制
$this->header('HTTP/1.1 403 Forbidden');
票数 42
EN

Stack Overflow用户

发布于 2012-07-14 00:48:53

代码语言:javascript
运行
复制
$this->response->statusCode(403);

当Cake准备好发送响应时,将设置状态代码。send ()期望发送状态代码和消息,所以在我的测试中,我认为我使用的header()被覆盖了。使用$this->header('HTTP/1.1 400 Bad Request')也不起作用,因为Cake希望对$this->header的任何调用都在冒号上拆分(例如:$this->header('Location: ...')

票数 15
EN

Stack Overflow用户

发布于 2012-10-05 06:46:59

在CakePHP 2中,preferred method是to throw an exception

代码语言:javascript
运行
复制
throw new ForbiddenException();
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1100867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档