提问人:Tym 提问时间:9/22/2023 最后编辑:ADysonTym 更新时间:9/22/2023 访问量:61
PHP http_response_code似乎不起作用。我*一定*做错了什么
PHP http_response_code doesn't seem to work. I *must* be doing something wrong
问:
在 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
}
答:
2赞
ADyson
9/22/2023
#1
您应该使用浏览器的网络工具来查看服务器为任何给定请求实际返回的 HTTP 响应代码。正如 M. Eriksson 在评论中指出的那样,对于特定状态代码,你可能会或可能不会得到的图形显示是浏览器的心血来潮,与你的 PHP 代码所做的事情无关。
您可以使用任何 HTTP 响应代码发送响应正文。如果你和这些代码一起回声,我希望客户会看到它。
http_response_code('400');
echo "Your request was not accepted";
die();
注意,如果你正在测试的东西最终应该是 webhook 响应,它无论如何都不是为了发送回浏览器,所以你最好使用 PostMan 或类似工具进行测试。
评论
I need to be able to reject it with a response body
....您可以发送带有任何 HTTP 响应代码的响应正文(也许除了 204 “No Content”!如果你和这些代码一起回声,我希望客户会看到它。