在PHP中处理跨域请求,可以使用CORS(跨来源资源共享)策略。以下是一个简单的示例,展示了如何在PHP webhook中设置CORS响应头。
<?php
header("Access-Control-Allow-Origin: *"); // 允许所有来源的访问,可以替换为特定域名
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE"); // 允许的请求方法
header("Access-Control-Allow-Headers: Content-Type, Authorization"); // 允许的请求头
header("Access-Control-Allow-Credentials: true"); // 是否发送cookie
// 检查请求方法
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
// 如果是预检请求,直接返回200
header("Access-Control-Max-Age: 1728000"); // 预检请求的有效时间(秒)
exit(0);
}
// 处理实际的请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 获取请求数据
$data = json_decode(file_get_contents('php://input'), true);
// 处理数据(例如保存到数据库)
// 返回响应
header("Content-Type: application/json");
echo json_encode([
"status" => "success",
"message" => "Data received and processed."
]);
} else {
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET");
header("Content-Type: application/json");
echo json_encode([
"status" => "error",
"message" => "Invalid request method."
]);
}
?>
这个示例中,我们设置了CORS相关的响应头,允许了GET和POST请求,并限制了允许的请求头。当接收到预检请求(OPTIONS方法)时,我们返回一个200状态码和预检请求的有效时间。对于实际的请求,我们检查请求方法并处理数据。