如何在任何错误时返回HTTP 500代码,无论什么

2022-08-30 10:39:32

我正在用PHP编写一个身份验证脚本,作为API调用,否则需要返回200403500”。only in the case that it approves the request, and(Forbidden) or

我遇到的问题是,php在错误情况下返回,而是将错误输出为html。我如何绝对确保php将返回HTTP代码,除非我自己显式返回HTTP或HTTP?换句话说,我想将任何和所有警告或错误条件转换为 s,无异常,以便默认情况是拒绝身份验证请求,而异常是使用代码批准它。200500200403500200

我摆弄过 和 ,但到目前为止没有运气。例如,如果代码在我发送HTTP响应代码之前输出了一些东西,PHP自然会报告在输出任何内容后您无法修改标头信息。但是,PHP将其报告为响应代码,并使用html解释问题。我甚至需要把这种东西变成代码。set_error_handler()error_reporting()200500

这在 PHP 中可能吗?还是我需要在更高的级别上执行此操作,例如以某种方式使用?如果是这样的话,你知道我该如何设置它吗?mod_rewrite


答案 1

只需将状态代码作为响应标头()发送

header('HTTP/1.1 500 Internal Server Error');

请记住,发送此内容时它之前不得有任何输出。这意味着没有调用,也没有HTML或空格。echo


答案 2

我检查了PHP文档中的header(),它比我做的要简单 - 如果第二个参数为真,它将替换类似的标头。默认值为 true。所以正确的行为是 header ,然后做身份验证逻辑,然后如果它进行身份验证,就做 header 。它将替换 403 响应,并保证 403 是默认值。('HTTP/1.1 403 Forbidden');('HTTP/1.1 200 OK')


推荐