Rumah >pembangunan bahagian belakang >tutorial php >$_SERVER[\'HTTP_HOST\'] lwn. $_SERVER[\'SERVER_NAME\']: Manakah Pembolehubah Nama Hos yang Betul untuk PHP?

$_SERVER[\'HTTP_HOST\'] lwn. $_SERVER[\'SERVER_NAME\']: Manakah Pembolehubah Nama Hos yang Betul untuk PHP?

DDD
DDDasal
2024-12-04 06:13:16333semak imbas

$_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME']: Which is the Right Hostname Variable for PHP?

Menentukan Pembolehubah Nama Hos yang Betul untuk Skrip PHP

Apabila menentukan pautan dalam skrip PHP anda, memilih pembolehubah yang sesuai untuk nama hos adalah penting . Dari segi sejarah, Ia dipercayai bahawa $_SERVER['HTTP_HOST'] harus digunakan kerana ia berdasarkan permintaan pelanggan, manakala $_SERVER['SERVER_NAME'] adalah berdasarkan fail konfigurasi pelayan anda dan boleh berbeza-beza.

Walau bagaimanapun, seperti yang dinyatakan dalam artikel Chris Shiflett "SERVER_NAME Versus HTTP_HOST," tiada jawapan yang pasti. Hanya dengan memaksa Apache menggunakan nama kanonik anda boleh mendapatkan semula nama pelayan yang betul dengan SERVER_NAME secara konsisten.

Dalam situasi di mana ini tidak mungkin, anda boleh mempertimbangkan untuk melaksanakan pendekatan senarai putih:

$allowed_hosts = array('foo.example.com', 'bar.example.com');
if (!isset($_SERVER['HTTP_HOST']) || !in_array($_SERVER['HTTP_HOST'], $allowed_hosts)) {
    header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request');
    exit;
}

Kaedah ini melibatkan penyemakan nama hos terhadap senarai nilai yang dibenarkan yang telah ditetapkan. Jika nama hos tidak terdapat dalam senarai, ralat akan dikembalikan.

Adalah penting untuk ambil perhatian bahawa walaupun $_SERVER['HTTP_HOST'] mungkin kelihatan seperti pilihan yang lebih fleksibel, ia boleh terdedah kepada manipulasi oleh pelakon jahat. Ini boleh menjejaskan keselamatan permohonan anda.

Oleh itu, keputusan terbaik bergantung pada keperluan khusus anda dan pertimbangan keselamatan. Jika anda memerlukan nama pelayan yang boleh dipercayai dan konsisten, anda mungkin perlu menguatkuasakan kanonik nama hos dalam konfigurasi pelayan anda dan menggunakan $_SERVER['SERVER_NAME']. Sebagai alternatif, pendekatan senarai putih dengan $_SERVER['HTTP_HOST'] menyediakan pilihan yang lebih fleksibel tetapi berkemungkinan kurang selamat.

Atas ialah kandungan terperinci $_SERVER[\'HTTP_HOST\'] lwn. $_SERVER[\'SERVER_NAME\']: Manakah Pembolehubah Nama Hos yang Betul untuk PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn