首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置响应状态码

设置响应状态码
EN

Stack Overflow用户
提问于 2011-05-29 03:44:39
回答 6查看 134K关注 0票数 94

我有一个API调用,我需要能够运行一些检查,并可能返回各种状态代码。我不需要自定义视图或任何东西,我只需要返回正确的代码。如果用户没有传递正确的凭据,我需要返回一个401状态。如果他们没有发送支持的请求格式,我需要返回一个400状态。

因为它是一个应用程序接口,所以我真正想做的就是设置响应状态并退出,并显示一条简单、愚蠢的消息,说明请求失败的原因(可能是使用exit)。只够完成这项工作,但我一直没能让它正常工作。我尝试过使用PHP的header()和Cake的$this->header() (这都在控制器中),但是虽然我得到了退出消息,但标题显示为200 OK状态。

使用下面的代码,我得到了消息,但是没有设置头。我遗漏了什么?

代码语言:javascript
复制
  if( !$this->auth_api() ) {
    header( '401 Not Authorized' );
    exit( 'Not authorized' );
  }
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-05-29 04:59:03

PHP <=5.3

header()函数有一个状态码参数。如果您指定了它,服务器将从那里处理它。

代码语言:javascript
复制
header('HTTP/1.1 401 Unauthorized', true, 401);

PHP >=5.4

请看Gajus的答案:https://stackoverflow.com/a/14223222/362536

票数 138
EN

Stack Overflow用户

发布于 2013-01-09 04:12:04

从PHP5.4开始,你可以使用http_response_code

代码语言:javascript
复制
http_response_code(404);

这将负责设置正确的HTTP标头。

如果您运行的是PHP < 5.4,那么您有两个选择:

在PHP中实现的

  1. Upgrade.
  2. Use this http_response_code function
票数 124
EN

Stack Overflow用户

发布于 2011-05-29 03:53:21

我不认为你设置的header是正确的,试试这个:

代码语言:javascript
复制
header('HTTP/1.0 401 Unauthorized');
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6163970

复制
相关文章

相似问题

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