ホームページ > バックエンド開発 > PHPチュートリアル > $_SERVER['HTTPS'] が未定義の場合に HTTPS 接続を確実にチェックする方法

$_SERVER['HTTPS'] が未定義の場合に HTTPS 接続を確実にチェックする方法

DDD
リリース: 2024-12-20 16:48:13
オリジナル
442 人が閲覧しました

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;
}
ログイン後にコピー

説明

コードは 2 つの条件を利用して HTTPS を決定しますstatus:

  • $_SERVER['HTTPS'] が定義されており、その値が「off」でない場合、接続が安全であることを示します。
  • $_SERVER[' であってもHTTPS'] は未定義です。$_SERVER['SERVER_PORT'] 値 443 (デフォルトの HTTPS ポート) をチェックすると、安全であることが確認されます。

このメソッドは、安全な接続であっても $_SERVER['HTTPS'] が設定されない可能性がある、IIS および Apache 1.x サーバーの潜在的な問題に対処します。

互換性

このコードは、IIS および Apache サーバーと互換性があります。さらに、ロード バランサーとサーバー間の接続がチェックされることに注意することが重要です。クライアントとロードバランサー間の接続には、HTTP_X_FORWARDED_PROTO ヘッダーを使用できますが、より複雑な実装が必要です。

以上が$_SERVER['HTTPS'] が未定義の場合に HTTPS 接続を確実にチェックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート