![How Can I Reliably Determine HTTPS Connection Status Without Using $_SERVER['HTTPS']?](https://img.php.cn/upload/article/000/000/000/173340595962700.jpg)
$_SERVER['HTTPS'] を使用しない HTTPS 接続ステータスの確認
$_SERVER[ を使用してサーバー接続のセキュリティを確認しようとする場合'HTTPS'] を使用すると、変数が未定義でエラーが発生するシナリオが発生する可能性があります。これを克服するには、一貫して信頼できる結果が得られる代替ソリューションを検討してください。
HTTPS 検出用の拡張コード
$_SERVER['HTTPS に依存せずに接続ステータスを判断するには']、次のコードを実装します:
1 2 3 4 5 | 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 サイトの他の関連記事を参照してください。