[解決済み] PHPのHTTP_HOSTとSERVER_NAMEの違いは何ですか?
質問
とはどのような違いがあるのでしょうか?
$_SERVER['HTTP_HOST']
と
$_SERVER['SERVER_NAME']
をPHPで作成することはできますか?
どのような場合にどちらを使うか、またその理由は何ですか?
どのように解決するのですか?
その
HTTP_HOST
が取得されます。
HTTPリクエストヘッダ
であり、これはクライアントが実際にリクエストの "ターゲットホスト" として使用したものである。また
SERVER_NAME
はサーバー構成で定義します。どちらを使うかは、それを何に使うかによります。しかし、一方はクライアントが管理する値であり、ビジネスロジックで使用するには信頼性が低いこと、もう一方はサーバーが管理する値であり、信頼性が高いことを理解する必要があります。しかし、ウェブサーバがそのような値に対して
SERVER_NAME
を正しく設定します。Apache HTTPDを例にとると、以下のようになります。
ドキュメント
:
ない場合
ServerName
が指定された場合、サーバーはIPアドレスの逆引きを行ってホスト名を推測しようとします。でポートが指定されていない場合はServerName
の場合、サーバーは受信リクエストのポートを使用します。最適な信頼性と予測性のために、ホスト名とポートを明示的に指定するにはServerName
ディレクティブを使用します。
更新情報
: 確認後
あなたの質問に対するPekkaの回答
へのリンクが含まれています。
ボビンスさんの回答
そのPHPは常に
HTTP_HOST
の値は
SERVER_NAME
そこで、Windows XP上の現在のXAMPP環境(Apache HTTPD 2.2.1 with PHP 5.2.8)を埃を飛ばしながら起動し、両方の値を表示するPHPページを作成し、Javaテスト・アプリケーションで
URLConnection
を修正するために
Host
ヘッダを作成し、テストしたところ、確かに(間違って)そうであることを教えられました。
最初にPHPを疑って、いくつか調べてから
PHPバグレポート
この件に関して、問題の根本は使用するウェブサーバーにあることを知りました。
Host
ヘッダが
SERVER_NAME
が要求されました。そこで私は
Apache HTTPD のバグレポート
を使って
各種キーワード
を発見しました。
関連バグ
. この動作は、Apache HTTPD 1.3あたりから導入されています。を設定する必要があります。
UseCanonicalName
ディレクティブを
on
の中に
<VirtualHost>
のエントリは
ServerName
で
httpd.conf
(の下にある警告も確認してください)。
ドキュメント
!).
<VirtualHost *>
ServerName example.com
UseCanonicalName on
</VirtualHost>
これは私の場合、うまくいきました。
まとめてみました。
SERVER_NAME
の方が信頼性が高いのですが、あなたは
依存
サーバーの設定に依存します。
関連
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み] "お知らせ 未定義変数"、"Notice: Notice: 未定義のインデックス", "Notice:未定義のインデックス", "Notice."。PHPを使用した「未定義のオフセット
-
[解決済み] Long-Polling、Websocket、Server-Sent Events (SSE)、Cometとは何ですか?
-
[解決済み] パブリック、プライベート、プロテクトの違いは何ですか?
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み】|と||や演算子の違いは何ですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
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 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み] PHP と mod_fcgid: handle_request_ipc 関数で ap_pass_brigade が失敗する。
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] PHPでドメイン名を取得する [重複]。
-
[解決済み] PHP $_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME'], 私はマニュアルページを正しく理解しているのでしょうか?
-
[解決済み] PHPで完全なURLを取得する
-
[解決済み】PHP サイトURL取得プロトコル - http vs https
-
[解決済み] PHPでベースURLを取得する方法を教えてください。