Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Tentukan Status Sambungan HTTPS Tanpa Menggunakan $_SERVER['HTTPS']?

Bagaimanakah Saya Boleh Tentukan Status Sambungan HTTPS Tanpa Menggunakan $_SERVER['HTTPS']?

DDD
DDDasal
2024-12-05 21:39:111023semak imbas

How Can I Reliably Determine HTTPS Connection Status Without Using $_SERVER['HTTPS']?

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

Apabila cuba memastikan keselamatan sambungan pelayan menggunakan $_SERVER[ 'HTTPS'], anda mungkin menghadapi senario di mana pembolehubah tidak ditentukan, yang membawa kepada ralat. Untuk mengatasinya, pertimbangkan penyelesaian alternatif yang secara konsisten menghasilkan hasil yang boleh dipercayai.

Kod Dipertingkatkan untuk Pengesanan HTTPS

Untuk menentukan status sambungan tanpa bergantung pada $_SERVER['HTTPS '], laksanakan kod berikut:

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

Keserasian dan Pertimbangan

Kod ini mempamerkan keserasian dengan pelbagai konfigurasi pelayan, termasuk IIS.

Menurut dokumentasi PHP.net dan maklum balas pengguna:

  • Jika skrip diakses melalui HTTPS, $_SERVER['HTTPS'] akan mengandungi bukan kosong nilai.
  • Untuk IIS dengan ISAPI, $_SERVER['HTTPS'] mungkin ditetapkan kepada "dimatikan" semasa sambungan bukan HTTPS.
  • Pelayan Apache 1.x mungkin tidak mentakrifkan $_SERVER[ 'HTTPS'] walaupun untuk sambungan selamat.

Tambahan Mata

  • Sambungan yang diwujudkan pada port 443 biasanya menunjukkan soket selamat. Walau bagaimanapun, ini hanyalah konvensyen, bukan jaminan.
  • Jika pengimbang beban wujud antara klien dan pelayan, kod tersebut tidak akan menilai sambungan pengimbang klien-ke-beban, sebaliknya pengimbang beban- sambungan ke pelayan. Untuk menilai yang pertama, pertimbangkan untuk menggunakan pengepala HTTP_X_FORWARDED_PROTO, walaupun kaedah ini memerlukan kerumitan yang lebih besar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Tentukan Status Sambungan HTTPS Tanpa Menggunakan $_SERVER['HTTPS']?. 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