[英]How do I log the raw HTTP headers with a PHP script?
我正在使用cURL腳本通過代理將POST數據發送到腳本,我想查看cURL腳本發送的原始HTTP頭。 我嘗試過的事情清單:
echo curl_getinfo($ch, CURLINFO_HEADER_OUT)
沒有輸出。 file_get_contents('php://input')
獲取一些HTTP頭但不是全部。 print_r($_SERVER)
也獲得了一些HTTP頭但不是全部(我知道這是因為應該有一個X-Forwarded-For頭而沒有) http_get_request_headers()
, apache_request_headers()
, $http_response_header
apache_request_headers()
, $HTTP_RAW_POST_DATA
沒有輸出所有內容。 救命?
打開CURLOPT_HEADER,而不是CURLINFO_HEADER_OUT,然后拆分\\ r \\ n \\ r \\ n(標題結束的位置),最大拆分計數為2:
<?php
$ch = curl_init('http://www.yahoo.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$result = curl_exec($ch);
if ($result !== false) {
$split_result = split("\r\n\r\n", $result, 2);
$header = $split_result[0];
$body = $split_result[1];
/** Process here **/
} else {
/** Error handling here **/
}
您還需要設置CURLINFO_HEADER_OUT
選項:
CURLINFO_HEADER_OUT
TRUE跟蹤句柄的請求字符串。
從PHP 5.1.3開始提供。 CURLINFO_前綴是故意的。
http://www.php.net/manual/en/function.curl-setopt.php
以下作品:
<?php
$ch = curl_init('http://www.google.com');
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HEADER_OUT);
如果您在Apache上作為模塊運行,那么apache_request_headers () 可以滿足您的需求。
對於幾乎任何其他架構,您只能選擇$ _SERVER中記錄的內容,或者您需要找到一些方法來使用Web服務器配置記錄信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.