ホームページ >バックエンド開発 >PHPチュートリアル >$_SERVER['HTTPS'] に依存せずに HTTPS の使用を確実に検出するにはどうすればよいですか?

$_SERVER['HTTPS'] に依存せずに HTTPS の使用を確実に検出するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-20 04:20:12904ブラウズ

How Can I Reliably Detect HTTPS Usage Without Relying on $_SERVER['HTTPS']?

$_SERVER['HTTPS'] を使用せずに HTTPS の使用状況を確認する代替方法

HTTPS 接続を検証する従来のアプローチには、$ の値のチェックが含まれます_SERVER['HTTPS']。ただし、特定のサーバー構成では、この変数が定義されていない可能性があり、エラーが発生します。

解決策

この問題に対処するために、次の関数は信頼できる代替手段を提供します。 HTTPS 接続の決定:

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

互換性と説明

  • このコードは、$_SERVER['HTTPS'] が非 HTTPS リクエストに対して「オフ」に設定されている IIS 構成に対応しています。
  • さらに、サーバーをチェックします。 $_SERVER['HTTPS'] が定義されていない場合、またはバックアップとしてポート (HTTPS 接続の場合は通常 443)

ロード バランサーに関する注意事項

このコードは、ロード バランサーが存在する場合にのみ、サーバーとロード バランサー間の接続をテストします。クライアントとロードバランサー間の接続をテストするには、HTTP_X_FORWARDED_PROTO ヘッダーを利用する必要がありますが、このアプローチはより複雑です。

以上が$_SERVER['HTTPS'] に依存せずに HTTPS の使用を確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。