正确地将主体为空的 200 响应发送到 WebHook。提供的最小示例
Correctly send a 200 response with an empty body to a WebHook. Minimal example provided
根据一些在线示例,我将 return 对正确签名的有效载荷进行 200 响应,对错误签名或格式错误的有效载荷进行 401 响应。
以下最小示例已经过测试。
正在正确生成签名,checkHash()
函数正确识别 signed/formed 有效载荷。
我从端点得到的反馈是响应包含正文。给出的建议 here 是从响应正文中删除所有内容 - 但据我所知,我 return 是作为回声的文字响应,即 200 或 401.
$key = 'abcSomeKey';
$rawPayload = file_get_contents("php://input");
checkHash();
function getSignature() {
return base64_encode(hash_hmac('sha256', $rawPayload, $key, true));
}
function checkHash() {
$signature = getSignature();
if($signature === $_SERVER['HTTP_X_XERO_SIGNATURE']) {
echo 200;
}
else {
echo 401;
}
}
我不太了解php,但有两个错误。签名验证在功能块内未按预期工作。 $rawPayload
是 getSignature()
函数中的空字符串。
此外,我天真地返回了下面格式正确的响应代码。
$key = "someKey";
$rawPayload = file_get_contents("php://input");
$signature = base64_encode(hash_hmac('sha256', $rawPayload, $key, true));
$authKey = $_SERVER['HTTP_X_XERO_SIGNATURE'];
if($signature === $authKey)
{
http_response_code(200);
}
else
{
http_response_code(401);
}
根据一些在线示例,我将 return 对正确签名的有效载荷进行 200 响应,对错误签名或格式错误的有效载荷进行 401 响应。
以下最小示例已经过测试。
正在正确生成签名,checkHash()
函数正确识别 signed/formed 有效载荷。
我从端点得到的反馈是响应包含正文。给出的建议 here 是从响应正文中删除所有内容 - 但据我所知,我 return 是作为回声的文字响应,即 200 或 401.
$key = 'abcSomeKey';
$rawPayload = file_get_contents("php://input");
checkHash();
function getSignature() {
return base64_encode(hash_hmac('sha256', $rawPayload, $key, true));
}
function checkHash() {
$signature = getSignature();
if($signature === $_SERVER['HTTP_X_XERO_SIGNATURE']) {
echo 200;
}
else {
echo 401;
}
}
我不太了解php,但有两个错误。签名验证在功能块内未按预期工作。 $rawPayload
是 getSignature()
函数中的空字符串。
此外,我天真地返回了下面格式正确的响应代码。
$key = "someKey";
$rawPayload = file_get_contents("php://input");
$signature = base64_encode(hash_hmac('sha256', $rawPayload, $key, true));
$authKey = $_SERVER['HTTP_X_XERO_SIGNATURE'];
if($signature === $authKey)
{
http_response_code(200);
}
else
{
http_response_code(401);
}