摘要:本文記錄了如何在php中獲取 curl 請求的請求頭信息及相應頭信息,以及一些常用請求參數設置,一、curl獲取響應頭...
一、CURL獲取響應頭
<?php $curl = curl_init(); $header[] = 'Authorization:Basic '.base64_encode("401_user:401_pwd"); if(isset(getallheaders()['Cookie'])){ $cookie = getallheaders()['Cookie']; $header[] = 'Cookie:'.$cookie; } if(strpos($_SERVER['CONTENT_TYPE'],'form-data')!==false){ $header[] = 'Content-Type: '.getallheaders()['Content-Type']; } $user_agent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36"; curl_setopt($curl, CURLOPT_URL, $url); // 設置來源 curl_setopt($curl, CURLOPT_REFERER, $server); // 關閉https驗證 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 設置請求頭 curl_setopt($curl, CURLOPT_HTTPHEADER, $header); // 輸出 response 頭 curl_setopt($curl, CURLOPT_HEADER, true); // 是否不需要響應的正文,為了節省帶寬及時間,在只需要響應頭的情況下可以不要正文 // curl_setopt($curl, CURLOPT_NOBODY, true); // 使用上面定義的 ua curl_setopt($curl, CURLOPT_USERAGENT, $user_agent); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1 ); $output = curl_exec($curl); // 獲取響應狀態碼 // $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE ); // 獲得響應結果里的:頭大小 $response_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); // 獲取頭信息 $response = substr($output, 0, $response_size); // 獲取正文 $data = substr($output, $response_size); // 設置header頭 $response_arr = array_filter(explode("\r\n",$response)); foreach ($response_arr as $item){ if(strpos($item,':') !== false){ header($item); } } curl_close($curl);
二、CURL獲取請求頭
<?php $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //關閉https驗證 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); //至關重要,CURLINFO_HEADER_OUT選項可以拿到請求頭信息 curl_setopt($curl, CURLINFO_HEADER_OUT, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $bodystr); $output = curl_exec($curl); //通過curl_getinfo()可以得到請求頭的信息 $string = curl_getinfo($curl);