PHP http_response_code 似乎不起作用。我*一定*做错了什么

问题描述 投票:0回答:1

在 PHP 7.4.30 中构建 Webhook 接收器。

我绝对可以收到。没有问题:-)

但是,我们需要对 JSON 进行同步验证,并发回 400 错误请求和 JSON,并解释验证失败的原因。

所以,有两个部分...

1:我正在测试接收 php,仅使用一个标头来“拒绝”任何连接,并根据我无休止的搜索结果尝试了许多不同的变体:

<?php
http_response_code('400');

die();
?>

结果是黑屏,而不是400。更改为404进行测试,它仍然显示黑屏。

参考PHP:如何发送HTTP响应代码?我试过了

<?php
header("HTTP/1.1 400 Bad Request");
die();
?>

...这又会导致空白页。

也尝试过

<?php
$sapi_type = php_sapi_name();
if (substr($sapi_type, 0, 3) == 'cgi')
    {header("Status: 404 Not Found");}
else
    {header("HTTP/1.1 404 Not Found");}

die();
?>

...你猜对了...只是一张空白页。

我一定是完全找错了方向,想知道你是否可以指导我如何通过 webhook 调用拒绝消息?我需要能够用响应正文拒绝它。

1a. Response with HTTP 403 return code,
response body
{
senderUniqueReference : S-005-03458900823-SUPP-20222313-12345687A
transactionId : T-006-1234567890-SUPP-20220401-1234CC ,
sentTimestamp : 2021-12-25T06:06:12.45",
message , XYZ123 - That's not our equipment
}
php http-status-codes
1个回答
0
投票

您应该使用浏览器的网络工具来查看服务器针对任何给定请求实际返回的 HTTP 响应代码。正如 M. Eriksson 在评论中指出的那样,您可能会或可能不会获得特定状态代码的图形显示取决于浏览器的突发奇想,与您的 PHP 代码的作用无关。

您可以使用任何 HTTP 响应代码发送响应正文。如果您将某些内容与这些代码一起回显,我希望客户会看到它。

http_response_code('400');
echo "Your request was not accepted";
die();

注意如果您正在测试最终应该是 Webhook 响应的内容,那么它实际上并不是为了发送回浏览器,因此您最好使用 PostMan 或类似工具等工具进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.