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

$_SERVER['HTTPS'] を使用せずに HTTPS 接続ステータスを確実に確認するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-05 21:39:111014ブラウズ

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

$_SERVER['HTTPS'] を使用しない HTTPS 接続ステータスの確認

$_SERVER[ を使用してサーバー接続のセキュリティを確認しようとする場合'HTTPS'] を使用すると、変数が未定義でエラーが発生するシナリオが発生する可能性があります。これを克服するには、一貫して信頼できる結果が得られる代替ソリューションを検討してください。

HTTPS 検出用の拡張コード

$_SERVER['HTTPS に依存せずに接続ステータスを判断するには']、次のコードを実装します:

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

互換性と考慮事項

このコードは、IIS を含むさまざまなサーバー構成との互換性を示します。

PHP.net ドキュメントおよびユーザー フィードバックによると、

  • スクリプトHTTPS 経由でアクセスされる場合、$_SERVER['HTTPS'] には空ではないvalue.
  • ISAPI を使用する IIS の場合、非 HTTPS 接続中に $_SERVER['HTTPS'] が「オフ」に設定される可能性があります。
  • Apache 1.x サーバーは $_SERVER[ を定義できない場合があります'HTTPS'] は安全な接続でも使用できます。

追加ポイント

  • ポート 443 で確立された接続は、通常、セキュア ソケットを示します。ただし、これは単なる慣例であり、保証ではありません。
  • クライアントとサーバーの間にロード バランサーが存在する場合、コードはクライアントからロード バランサーへの接続ではなく、ロード バランサーを評価します。サーバーへの接続。前者を評価するには、HTTP_X_FORWARDED_PROTO ヘッダーの使用を検討してください。ただし、この方法はより複雑になります。

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

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