Saya baru mengenal PHP. Saya mencoba untuk mendapatkan Header dari respon setelah mengirim permintaan POST curl php. Klien mengirimkan permintaan ke server dan server mengirimkan kembali respon dengan Header. Berikut adalah cara saya mengirim permintaan POST saya.
$client = curl_init($url);
curl_setopt($client, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($client, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($client, CURLOPT_HEADER, 1);
$response = curl_exec($client);
var_dump($response);
Berikut adalah respons Header dari server yang saya dapatkan dari browser
HTTP/1.1 200 OK
Date: Wed, 01 Feb 2017 11:40:59 GMT
Authorization: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2Vycy9CYW9CaW5oMTEwMiIsIm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiMTIzNCJ9.kIGghbKQtMowjUZ6g62KirdfDUA_HtmW-wjqc3ROXjc Content-Type: text/html;charset=utf-8 Transfer-Encoding: chunked Server: Jetty(9.3.6.v20151106)
Bagaimana saya bisa mengekstrak bagian Otorisasi dari Header? Saya perlu menyimpannya di dalam cookie
Ini mengkonversi semua header ke dalam array
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, "example.com");
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//enable headers
curl_setopt($ch, CURLOPT_HEADER, 1);
//get only headers
curl_setopt($ch, CURLOPT_NOBODY, 1);
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
$headers = [];
$output = rtrim($output);
$data = explode("\n",$output);
$headers['status'] = $data[0];
array_shift($data);
foreach($data as $part){
//some headers will contain ":" character (Location for example), and the part after ":" will be lost, Thanks to @Emanuele
$middle = explode(":",$part,2);
//Supress warning message if $middle[1] does not exist, Thanks to @crayons
if ( !isset($middle[1]) ) { $middle[1] = null; }
$headers[trim($middle[0])] = trim($middle[1]);
}
// Print all headers as array
echo "<pre>";
print_r($headers);
echo "</pre>";
Untuk jawaban pertama, perhatikan bahwa kodenya:
$middle=explode(":",$part);
akan menghasilkan hasil yang salah dengan data string yang mengandung :
, seperti misalnya:
Sat, 14 Jan 2017 01:10:01 GMT
Kode yang benar untuk membagi bidang untuk membangun array akan seperti:
$middle=explode(":",$part,2);
Anda cukup menyertakan coding ini ke dalam permintaan curl Anda
curl_setopt($curl_exec, CURLOPT_HEADER, true);
curl_setopt($curl_exec, CURLOPT_NOBODY, true);
setelah eksekusi curl Anda gunakan $header_data= curl_getinfo($curl_exec);
Kemudian Anda mendapatkan semua header
print_r($header_data);
atau gunakan shell_exec
echo shell_exec("curl -I http://example.com ");