PHP get_headers: kirim permintaan HTTP HEAD melalui proxy
Berikan konteks aliran langsung ke get_headers, pilih HEAD dengan sengaja, dan putuskan apakah pengalihan diikuti.
Di PHP, get_headers() menerima konteks aliran sebagai argumen ketiganya. Pada PHP 8, pemeriksaan header untuk URL HTTP dapat membawa konfigurasi proxy-nya sendiri:
$context = stream_context_create([
'http' => [
'proxy' => 'tcp://proxy.example.net:8080',
'request_fulluri' => true,
'method' => 'HEAD',
'follow_location' => 0,
'timeout' => 10,
],
]);
$headers = get_headers('http://example.net/file.zip', false, $context);
if ($headers === false) {
throw new RuntimeException('Header request failed');
}Proxy adalah titik akhir TCP untuk pembungkus aliran HTTP. Ganti host dan port placeholder-nya dengan kandidat tanpa autentikasi dari daftar proxy HTTP untuk pemeriksaan HTTP publik ini. request_fulluri menyediakan URI tujuan lengkap di baris permintaan HTTP, seperti yang diharapkan banyak proxy penerus. Konteks ini milik panggilan ini; ini tidak mengubah konteks bawaan yang dipakai pembacaan URL lain.
Meskipun nama fungsinya begitu, metode permintaan bawaannya adalah GET. Metode HEAD yang eksplisit meminta server metadata respons tanpa badan respons yang sesuai. Server dapat menolak HEAD atau menanganinya secara berbeda, jadi pemeriksaan header yang berhasil bukan bukti bahwa unduhan berikutnya akan berhasil.
Di sini, pengikutan pengalihan dimatikan untuk memeriksa respons pertama. Header Location dan status pengalihan kemudian menjadi hasil yang berguna, bukan instruksi untuk mengambil URL lain. Jika pemeriksaan harus mengikuti pengalihan, ubah kebijakan itu dengan sengaja dan perhitungkan header respons tambahan.
Argumen false mempertahankan larik header berindeks. Gunakan true ketika penguraian asosiatif lebih berguna.