首頁 >後端開發 >php教程 >如何在 PHP 中可靠地確定 HTTPS 連線狀態?

如何在 PHP 中可靠地確定 HTTPS 連線狀態?

Susan Sarandon
Susan Sarandon原創
2024-12-03 19:17:13858瀏覽

How Can I Reliably Determine HTTPS Connection Status in PHP?

確定$_SERVER['HTTPS'] 以外的HTTPS 連接狀態

許多線上教學建議檢查$_SERVER['HTTPS']來確定伺服器連線是否透過HTTPS 進行保護。但是,某些伺服器上可能未定義 $_SERVER['HTTPS'],從而導致錯誤。

HTTPS 偵測的替代變數

要解決此問題,請考慮使用 isSecure() 函數,即使 $_SERVER['HTTPS']為undefined:

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

相容性和注意事項

  • IIS 相容性: 此函數適用於 IIS 伺服器。
  • **未定義的 $_SERVER['HTTPS']:** 儘管文件指出$_SERVER['HTTPS'] 應該為 HTTPS 連接設置,它可能在某些配置中未定義。
  • Apache 1.x 伺服器: Apache 1.x 伺服器可能未定義 $_SERVER ['HTTPS'] 用於安全連線。
  • 連接埠 443 檢查: 約定顯示建立的連線在連接埠 443 上通常使用安全套接字。

負載平衡器與 HTTP_X_FORWARDED_PROTO

請注意,此函數不會測試客戶端與潛在負載平衡器之間的連線。要檢查這一點,可以利用 HTTP_X_FORWARDED_PROTO 標頭,但實現更為複雜。

以上是如何在 PHP 中可靠地確定 HTTPS 連線狀態?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn