curl设置自定义header

服务端
<?php
$file = __DIR__ . '/server.txt';

$server = var_export($_SERVER, TRUE) . PHP_EOL . PHP_EOL;
file_put_contents($file, $server);

$data = file_get_contents('php://input');
$dataArr = array();
parse_str($data, $dataArr);
file_put_contents($file, var_export($dataArr, TRUE), FILE_APPEND);

echo 'OK';

客户端
<?php
$url = 'http://www.domain.com/server.php';

// 自定义header
// 重要提醒:分隔符必须要用中横线,否则无效。(但是获取时中横线会被转为下划线,不知道为什么这样设计。)
$header = array(
    "my-header-1:这是我的自定义header1",
    "my-header-2:这是我的自定义header2",
    "my-header-3:这是我的自定义header3",
);
// server.php页面获取$_SERVER能够看到自定义header,结果如下:
// 'HTTP_MY_HEADER_1' => '这是我的自定义header1',
// 'HTTP_MY_HEADER_2' => '这是我的自定义header2',
// 'HTTP_MY_HEADER_3' => '这是我的自定义header3',
// 说明:header名称会被强制转为全大写,且在前面加上“HTTP_”前缀。

$data = array('name' => '张三', 'age' => 18);
$data = is_array($data) ? http_build_query($data) : $data;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);
curl_close($ch);

echo $response; // OK

Copyright © 2024 码农人生. All Rights Reserved