Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menentukan Status Sambungan HTTPS dengan Amanah dalam PHP?

Bagaimanakah Saya Boleh Menentukan Status Sambungan HTTPS dengan Amanah dalam PHP?

Susan Sarandon
Susan Sarandonasal
2024-12-03 19:17:13849semak imbas

How Can I Reliably Determine HTTPS Connection Status in PHP?

Menentukan Status Sambungan HTTPS Melangkaui $_SERVER['HTTPS']

Banyak tutorial dalam talian mencadangkan anda menyemak $_SERVER['HTTPS'] untuk memastikan sama ada sambungan pelayan dijamin melalui HTTPS. Walau bagaimanapun, $_SERVER['HTTPS'] mungkin tidak ditakrifkan pada pelayan tertentu, yang membawa kepada ralat.

Pembolehubah Alternatif untuk Pengesanan HTTPS

Untuk mengatasi isu ini, pertimbangkan menggunakan fungsi isSecure(), yang memberikan petunjuk yang boleh dipercayai tentang status sambungan HTTPS walaupun ketika $_SERVER['HTTPS'] adalah undefined:

function isSecure() {
  return
    (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443;
}

Keserasian dan Pertimbangan

  • Keserasian IIS: Fungsi ini berfungsi dengan pelayan IIS.
  • **Undefined $_SERVER['HTTPS']:** Walaupun dokumentasi menyatakan bahawa $_SERVER['HTTPS'] hendaklah ditetapkan untuk sambungan HTTPS, ia mungkin tidak ditentukan dengan konfigurasi tertentu.
  • Pelayan Apache 1.x: Pelayan Apache 1.x mungkin tidak mentakrifkan $_SERVER ['HTTPS'] untuk sambungan selamat.
  • Port 443 Semak: Konvensyen mencadangkan bahawa sambungan yang dibuat pada port 443 biasanya menggunakan soket selamat.

Pengimbang Beban dan HTTP_X_FORWARDED_PROTO

Perhatikan bahawa fungsi ini tidak menguji sambungan antara pelanggan dan pengimbang beban yang berpotensi. Untuk menyemak ini, pengepala HTTP_X_FORWARDED_PROTO boleh digunakan, tetapi pelaksanaannya lebih kompleks.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Status Sambungan HTTPS dengan Amanah dalam 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