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!