無効なホスト ヘッダー (無効なホスト ヘッダー) サーバー ドメイン名アクセスのエラーを解決するには、ネットワーク全体で複数の方法があります。

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セキュリティ上の理由からデフォルトでチェックが入っておりhostnamehostname設定にない場合はアクセスできないことが分かりました。

この問題を解決するには 2 つの方法があります。

  1. スキップhostチェックを設定する

  2. hostホストアドレスに設定します

3. バグを修正する

3.1 ホスト チェックをスキップするには 2 つの方法があります。
  1. devServerフィールドに追加してdisableHostCheck: true、チェックをスキップできますhost

devServer次の図に示すように、フィールドはbuildディレクトリの下のファイルにあります。webpack.dev.conf.js

ここに画像の説明を挿入

  1. 次の図に示すように、ファイル:内のコマンドpackage.jsonを変更します。scriptswebpack-dev-server --disableHostCheck=true

ここに画像の説明を挿入

3.2 ホストをホストアドレスとして設定します。次の 2 つの方法があります。
  1. configディレクトリ内のindex.jsファイルを変更しますhost

このデフォルトは で、たとえば次の図に示すようにlocalhost変更できます。xxx.comsuperjson.com

ここに画像の説明を挿入

  1. package.jsonscript次のステートメントを追加します。
 webpack-dev-server --host=xxx.com

また

--public=xxx.com

上記のエラーの解決策でエラーが解決できない場合は、次の方法を参照してエラーを解決できます。

4. このエラーを解決するその他の方法

上で述べたように、Invalid Host headerこれはアプリケーションで通常発生する一般的なエラー メッセージですWeb

これは、HTTPリクエスト内のHost header(ホスト ヘッダー) と実際にリクエストされたホストの間に不一致があることを示します。これは、プロキシ サーバーやロード バランサーなどのネットワーク デバイスが原因である可能性があります。

このエラーを解決する他の方法は次のとおりです。

  1. アプリケーション構成ファイルWeb内のホスト名が正しいことを確認し、それが実際のリクエストのホスト名と一致していることを確認してください。

  2. Web信頼できるホスト名のリストをアプリケーション構成ファイルに追加します。これにより、リスト内の承認されたホスト名のみがアプリケーションにアクセスできるようになります。

  3. プロキシ サーバーまたはロード バランサの構成を確認し、ホスト ヘッダーが正しく転送されていることを確認してください。

  4. 暗号化を使用している場合はSSL、証明書に正しいホスト名が含まれていること、および証明書が正しくインストールされていることを確認してくださいSSL

  5. Webアプリケーションのチェックを無効にしてみてくださいHost header攻撃者が偽の Host ヘッダーを使用して特定のセキュリティ対策を回避できるため、これによりセキュリティ リスクが生じる可能性があることに注意してください。

  6. Webアプリケーションのコードを更新します。場合によっては、Webアプリケーション コードが原因でエラーが発生する可能性があります。アプリケーション コードがリクエスト ヘッダーを正しく処理していることを確認してください。詳細については、アプリケーションのドキュメントを参照するか、開発者に問い合わせることによって確認できます。

  7. トラストプロキシヘッダーを有効にします。使用しているサーバー ソフトウェアが Trust Proxy ヘッダーをサポートしている場合は、このオプションを有効にして問題を解決できます。これにより、プロキシ サーバーからリクエストを受信するときにプロキシ ヘッダーを信頼するようにサーバーに指示されます。

結論として、Invalid Host headerエラーは通常、構成の問題またはネットワーク デバイスの設定が正しくないことが原因で発生します。

アプリケーションの構成をチェックし、ホスト名が正しいことを確認することで、この問題を修正できるはずです。

どのような解決策を講じる場合でも、注意してください。加えた変更を必ず理解し、テストする前にすべての構成ファイルとコードをバックアップしてください。

おすすめ

転載: blog.csdn.net/lvoelife/article/details/129203942