首頁 >後端開發 >php教程 >當 $_SERVER['HTTPS'] 未定義時如何可靠地檢查 HTTPS 連線?

當 $_SERVER['HTTPS'] 未定義時如何可靠地檢查 HTTPS 連線?

DDD
DDD原創
2024-12-20 16:48:13421瀏覽

How to Reliably Check for HTTPS Connection When $_SERVER['HTTPS'] is Undefined?

是否啟用 HTTPS:解決未定義的 $_SERVER['HTTPS']

檢查 $_SERVER['HTTPS'] 仍然是驗證 HTTPS 連接的常用方法。但是,某些伺服器上此變數中未定義的值可能會導致錯誤。為了解決這個問題,可以使用更可靠的替代方法。

解決方案

此程式碼片段可確保無論$_SERVER['HTTPS'] 可用性如何,都可以確定HTTPS 狀態:

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

說明

程式碼利用兩個條件來決定HTTPS status:

  • 如果定義了 $_SERVER['HTTPS'] 並且其值不是“off”,則表示連接是安全的。
  • 即使$_SERVER[' HTTPS'] 未定義,檢查$_SERVER['SERVER_PORT'] 值443(預設HTTPS 連接埠)確認安全性

此方法解決了IIS 和Apache 1.x 伺服器的潛在問題,其中即使使用安全連接,也可能無法設定$_SERVER['HTTPS']。

相容性

此程式碼與 IIS 和 Apache 伺服器相容。此外,需要注意的是,它會檢查負載平衡器和伺服器之間的連接。對於客戶端和負載平衡器之間的連接,可以使用 HTTP_X_FORWARDED_PROTO 標頭,儘管它需要更複雜的實作。

以上是當 $_SERVER['HTTPS'] 未定義時如何可靠地檢查 HTTPS 連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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