PHP

php webhook怎样处理跨域请求

小樊
81
2024-12-07 00:58:24
栏目: 编程语言

在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状态码和预检请求的有效时间。对于实际的请求,我们检查请求方法并处理数据。

0
看了该问题的人还看了