[解決済み】$_SERVER['HTTPS']を使わずにHTTPSを使用しているかどうかを調べる方法]
質問
ネット上で多くのチュートリアルを見ましたが、その中で、以下の項目をチェックする必要があると書かれています。
$_SERVER['HTTPS']
サーバーが HTTPS で保護されている場合。私の問題は、私が使用しているいくつかのサーバーで発生しました。
$_SERVER['HTTPS']
が未定義の変数で、エラーになります。常に定義されているはずの他の変数をチェックすることはできますか?
念のため、私は現在、HTTPS接続であるかどうかを解決するためにこのコードを使用しています。
if(isset($_SERVER['HTTPS'])) {
if ($_SERVER['HTTPS'] == "on") {
$secure_connection = true;
}
}
解決方法は?
を指定した場合でも、常に動作するはずです。
$_SERVER['HTTPS']
は未定義です。
function isSecure() {
return
(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
|| $_SERVER['SERVER_PORT'] == 443;
}
IISに対応したコードです。
<ブロッククオート-
スクリプトがHTTPSプロトコルで照会された場合、空でない値に設定されます。
-
IISでISAPIを使用する場合、リクエストがHTTPSプロトコルを介して行われなかった場合、値は"off"になることに注意してください。(同じ挙動が、Fast-CGI アプリケーションとして PHP を実行している IIS7 でも報告されています)。
また、Apache 1.x サーバー(および壊れたインストール)には
$_SERVER['HTTPS']
は、セキュアな接続であっても定義されています。保証されているわけではありませんが、ポート 443 での接続は
規約
を使用している可能性が高いです。
セキュアソケット
そのため、ポートチェックが追加されています。
補足:クライアントとサーバーの間にロードバランサーがある場合、このコードはクライアントとロードバランサーの間の接続をテストするのではなく、ロードバランサーとサーバーの間の接続をテストします。前者の接続をテストするには
HTTP_X_FORWARDED_PROTO
ヘッダがありますが、これはもっと複雑です。
最新コメント
この回答の下にあります。
関連
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み] mysql_field_nameを新しいmysqliに変更します。
-
[解決済み] PHP 未定義関数への呼び出し
-
[解決済み] foreach インデックスを見つけるには?
-
[解決済み] HttpClient over HTTPSを使用してすべての証明書を信頼する
-
[解決済み] Node.jsでHTTPSサーバーを作成する方法とは?
-
[解決済み】.htaccessとmod_rewriteで強制的にSSL/https化する。
-
[解決済み] [Solved] javax.net.ssl.SSLHandshakeException の解決: sun.security.validator.ValidatorException: PKIX パスの構築に失敗しました エラー?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】接続の取得に失敗しました: php_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
[解決済み] PHPでベースURLを取得する方法を教えてください。