1. エラーを再現します
vue-cli
環境構築時はnginx
プロキシサーバーとして利用していますが、アクセスすると と表示されますInvalid Host header
。
2. 分析エラー
問題を解決する前に、それが何なのか、なぜそうなのかを知り、それがInvalid Host header
何なのかを理解する必要があります。
ChatGPT
現在正規化中ですが、次の図に示すように、それを使用してそれが何であるかChatGPT
を答えることができます。Invalid Host header
「無効なホスト ヘッダー」エラーは通常、不正なホスト ヘッダー値または予期しないホスト ヘッダー値を使用してサーバーにリクエストが行われた場合に、Web アプリケーションで発生します。
ホスト ヘッダーは HTTP リクエストの必須フィールドで、クライアントが接続するサーバーのホスト名を指定します。クライアントがサーバーにリクエストを送信すると、サーバーはホスト ヘッダー値がサーバーのホスト名と一致することを確認します。ホスト ヘッダーの値がサーバーのホスト名と一致しない場合、サーバーは「無効なホスト ヘッダー」エラー メッセージを表示してリクエストを拒否することがあります。
このエラーは、次のようなさまざまな理由で発生する可能性があります。
- クライアントが間違ったサーバーにリクエストを送信しています。
- クライアントはホスト名ではなく IP アドレスにリクエストを送信しています。
クライアントは、間違ったホスト ヘッダー値を持つリクエストを転送するプロキシまたはロード バランサを使用しています。- サーバーは特定のホスト ヘッダー値を持つリクエストのみを受け入れるように構成されており、クライアントは一致する値を送信していません。
このエラーを解決するには、サーバー構成を確認するか、クライアントが正しいサーバーに正しいホスト ヘッダー値を使用して要求を送信していることを確認する必要がある場合があります。ホスト ヘッダー値を変更している可能性のあるリクエストに関連するプロキシまたはロード バランサーが存在するかどうかを確認する必要がある場合もあります。
しかし、残念なことに、ChatGPT
英語での返答を考えると、私の部門はそれを次のように中国語に翻訳した方がよいでしょう。
Web
一般に、アプリケーションで无效的主机头
エラーが発生するのは、不正なホスト ヘッダー値または予期しないホスト ヘッダー値を使用してサーバーにリクエストが行われた場合です。
ホスト ヘッダーは、HTTP
クライアントが接続しているサーバーのホスト名を指定するリクエストの必須フィールドです。クライアントがサーバーにリクエストを送信すると、サーバーは Host ヘッダー値がサーバーのホスト名と一致することを確認します。ホスト ヘッダー値がサーバーのホスト名と一致しない場合、サーバーは主机标头无效
エラー メッセージを表示してリクエストを拒否することがあります。
このエラーの理由には次のようなものがあります。
- クライアントが間違ったサーバーにリクエストを送信しています。
- クライアントは
IP
ホスト名ではなくアドレスにリクエストを送信しています。- クライアントは、間違ったホスト ヘッダー値でプロキシまたはロード バランサ転送を使用しています。
- サーバーは、特定の Host ヘッダー値を持つ要求のみを受け入れるように構成されていますが、クライアントは一致する値を送信しませんでした。
このエラーを解決するには、サーバー構成をチェックするか、クライアントが正しいホスト ヘッダー値を持つ正しいサーバーにリクエストを送信していることを確認する必要がある場合があります。ホスト ヘッダー値を変更している可能性のあるリクエストに関与するプロキシまたはロード バランサーがないか確認することもできます。
つまり、Invalid Host header
はい无效的主机头
、このエラーの理由も上記で説明したとおりです。
ただし、上記の理由は問題の原因ではなく、自分でエラーをトラブルシューティングすることしかできません。
調査を重ねた結果、新バージョンはwebpack-dev-server
セキュリティ上の理由からデフォルトでチェックが入っておりhostname
、hostname
設定にない場合はアクセスできないことが分かりました。
この問題を解決するには 2 つの方法があります。
-
スキップ
host
チェックを設定する -
host
ホストアドレスに設定します
3. バグを修正する
3.1 ホスト チェックをスキップするには 2 つの方法があります。
devServer
フィールドに追加してdisableHostCheck: true
、チェックをスキップできますhost
。
devServer
次の図に示すように、フィールドはbuild
ディレクトリの下のファイルにあります。webpack.dev.conf.js
- 次の図に示すように、ファイル:内のコマンド
package.json
を変更します。scripts
webpack-dev-server --disableHostCheck=true
3.2 ホストをホストアドレスとして設定します。次の 2 つの方法があります。
config
ディレクトリ内のindex.js
ファイルを変更しますhost
。
このデフォルトは で、たとえば次の図に示すようにlocalhost
変更できます。xxx.com
superjson.com
package.json
script
次のステートメントを追加します。
webpack-dev-server --host=xxx.com
また
--public=xxx.com
上記のエラーの解決策でエラーが解決できない場合は、次の方法を参照してエラーを解決できます。
4. このエラーを解決するその他の方法
上で述べたように、Invalid Host header
これはアプリケーションで通常発生する一般的なエラー メッセージですWeb
。
これは、HTTP
リクエスト内のHost header
(ホスト ヘッダー) と実際にリクエストされたホストの間に不一致があることを示します。これは、プロキシ サーバーやロード バランサーなどのネットワーク デバイスが原因である可能性があります。
このエラーを解決する他の方法は次のとおりです。
-
アプリケーション構成ファイル
Web
内のホスト名が正しいことを確認し、それが実際のリクエストのホスト名と一致していることを確認してください。 -
Web
信頼できるホスト名のリストをアプリケーション構成ファイルに追加します。これにより、リスト内の承認されたホスト名のみがアプリケーションにアクセスできるようになります。 -
プロキシ サーバーまたはロード バランサの構成を確認し、ホスト ヘッダーが正しく転送されていることを確認してください。
-
暗号化を使用している場合は
SSL
、証明書に正しいホスト名が含まれていること、および証明書が正しくインストールされていることを確認してくださいSSL
。 -
Web
アプリケーションのチェックを無効にしてみてくださいHost header
。攻撃者が偽の Host ヘッダーを使用して特定のセキュリティ対策を回避できるため、これによりセキュリティ リスクが生じる可能性があることに注意してください。 -
Web
アプリケーションのコードを更新します。場合によっては、Web
アプリケーション コードが原因でエラーが発生する可能性があります。アプリケーション コードがリクエスト ヘッダーを正しく処理していることを確認してください。詳細については、アプリケーションのドキュメントを参照するか、開発者に問い合わせることによって確認できます。 -
トラストプロキシヘッダーを有効にします。使用しているサーバー ソフトウェアが Trust Proxy ヘッダーをサポートしている場合は、このオプションを有効にして問題を解決できます。これにより、プロキシ サーバーからリクエストを受信するときにプロキシ ヘッダーを信頼するようにサーバーに指示されます。
結論として、Invalid Host header
エラーは通常、構成の問題またはネットワーク デバイスの設定が正しくないことが原因で発生します。
アプリケーションの構成をチェックし、ホスト名が正しいことを確認することで、この問題を修正できるはずです。
どのような解決策を講じる場合でも、注意してください。加えた変更を必ず理解し、テストする前にすべての構成ファイルとコードをバックアップしてください。