IISで悪い要求エラー(400)を解決する方法は?
要求のサイズとURLの制限を確認し、web.configでmaxallowedcontentlength、maxrequestlength、maxurl、maxquerystringを調整して、制限問題を解決します。 2.無効な要求ヘッダーまたはエンコーディングを確認し、フィドラーまたは失敗した要求追跡を使用して、間違ったヘッダーを識別および修正します。 3. HTTPS/SSLの問題をトラブルシューティングし、クライアントがHTTPSを使用し、SNIを正しく構成し、一致していることを確認します。 4.モデルの結合エラーを回避するために、リクエスト本体が正しくフォーマットされ、コンテンツタイプの一致があることを確認します。 5. URLで特殊文字をエンコードし、apposedoubleScapingを慎重に使用します。 6. IISログと失敗した要求追跡ログを確認して、原因を正確に見つけ、最後にクライアントリクエストを構成または修復して400エラーを解決します。
IISの400の悪い要求エラーは、不正な構文や無効なコンテンツのために、サーバーがクライアントの要求を処理できなかったことを意味します。これはクライアント側のエラーですが、多くの場合、解決するためにサーバー構成の調整が必要です。一般的な原因を診断して修正する方法は次のとおりです。

1.リクエストサイズとURLの制限を確認します
IISには、リクエストサイズとURL/クエリ文字列の長さに応じてデフォルトの制限があります。これらのトリガーを超えると400エラーがあります。
修正:web.configのリクエスト制限を調整します

<System.Webserver> <security> <RequestFiltering> <! - 最大許容コンテンツの長さ(バイト単位)を増やします - > <requestlimits maxallowedcontentlength = "104857600" /> </requestfiltering> </security> </system.webserver> <System.Web> <! - 最大要求の長さを増やします(kb) - > <httpruntime maxrequestlength = "102400" /> </system.web>
また、URLまたはクエリの文字列が長すぎる場合:
<System.Webserver> <security> <RequestFiltering> <requestlimits maxurl = "4096" maxquerystring = "2048" /> </requestfiltering> </security> </system.webserver>
ヒント:必要に応じて値を増やします(たとえば、ファイルのアップロードや長いクエリ文字列の場合)が、セキュリティのために過度に高い制限を設定しないでください。
2。無効なヘッダーまたはエンコード
不正なヘッダーを送信するクライアント(たとえば、無効な文字、重複ヘッダーなど)は、IIがリクエストを拒否する可能性があります。
解決する手順:
- Fiddler、Postman、Browser Devtoolsなどのツールを使用して、リクエストヘッダーを検査します。
-
Content-Type
、Host
、またはAuthorization
などのヘッダーが正しくフォーマットされていることを確認してください。 - 適切にエンコードされていない限り、ヘッダー値の特殊文字を避けてください。
- IISでは、失敗した要求トレースを有効にして、どのヘッダーが問題を引き起こしたかを確認します。
失敗した要求トレースを有効にします:
- IISマネージャーで、サイトを選択します。
- 「失敗した要求トレース」を開きます。
- トレースを有効にし、ステータスコード400のルールを設定します。
- エラーを再現して、ログを確認します(
%SystemDrive%\inetpub\logs\FailedReqLogFiles
)。
3。HTTPS/SSLの問題(HTTPSのみで400)
以下の場合、HTTPSを介してサイトにアクセスするときに400エラーが表示される場合があります。
- クライアントは、HTTPリクエストをHTTPSポートに送信します。
- SNI(サーバー名表示)が欠落または誤解されています。
- バインディングとリクエストホストの間には不一致があります。
チェック:
- ポート443に接続するときは、クライアントが
https://
を使用することを確認します。 - IISのサイトのバインディングには、正しいIP、ポート、ホスト名が含まれていることを確認してください。
- SNIを使用している場合は、クライアントがサポートしていることを確認してください(古いクライアントはそうでない場合があります)。
4。不正なボディまたは無効なコンテンツタイプ
要求本体が破損しているか、 Content-Type
ヘッダーが実際のデータと一致しない場合(たとえば、JSONにtext/plain
で送信する)、IISまたはアプリが拒否される場合があります。
ソリューション:
- APIが正しい
Content-Type
(application/json
)を送信するようにします。 - リクエストボディのフォーマット(例えば、適切にフォーマットされたJSON)を検証します。
- ASP.NETを使用する場合は、モデルの結合エラーを確認してください。これらは400秒の泡立ちをすることがあります。
Web APIについては、詳細なエラーを有効にすることを検討してください。
<System.Web> <customerrors mode = "off" /> </system.web>
5。URLエンコーディングと特殊文字
エンコードされていない特殊文字(例: #
、 [
、 ]
、スペース)を持つURLは、400エラーを引き起こす可能性があります。
修理:
- 常にURLエンコードクエリパラメーター。
- IISでは、URLの制限を緩和できます(生産には推奨されません):
<System.Webserver> <security> <requestfilteringは、doubleescaping = "true" />を許可します </security> </system.webserver>
allowDoubleEscaping
慎重に使用すると、セキュリティリスクを導入できます。
6. IISログを確認し、リクエストのトレースに失敗しました
常にログを参照して、根本的な原因を特定します。
- IISログの場所:
C:\inetpub\logs\LogFiles\W3SVC1
-
sc-status: 400
を使用してエントリを探し、cs-uri-stem
、cs(User-Agent)
、およびcs(Referer)
を確認してください。
失敗したリクエストトレースは、どのモジュールがリクエストを拒否したかなど、より多くの詳細を提供します。
要するに、IISの400のエラーは、通常、サイズの制限、奇形の構文、または無効なヘッダーによるものです。リクエスト構造を確認し、必要に応じて制限を調整し、ロギング/トレースを使用して正確な原因を特定します。ほとんどの問題は、 web.config
を調整したり、クライアント側のリクエストを修正したりすることで解決できます。
以上がIISで悪い要求エラー(400)を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

32ビットアプリケーションサポートを有効にすることが重要なステップです。 IIS Managerで対応するアプリケーションプールを見つけて、「32ビットアプリケーションを有効にする」をtrueに設定する必要があります。 2。変更後にアプリケーションプールをリサイクルして、構成を有効にします。 3. 32ビットDLLまたはCOMコンポーネントが、SYSWOW64ディレクトリのREGSVR32を介して登録されていることを確認し、アプリケーションプールIDの権限を確認します。

uselogparsertoidentifyslow-runningRequestsbyqueryingthetime-taken andsortingindessindessindestofindthetop10slowestrequests、helpsdetectectinefficientingpots;

識別theCorrectw3wp.exeprocessbyrunningiisiisappincommandplompttoMatchyourappのsapplicationpootlwithitspid.2.invisualstudio、attachthedebuggerstotheidefiedifiedifiedifiedifiedw.exeprocess、selectingtheappuratedebuggertype(&edorcoreclreclrede)

tomanageiiiswithpowershell、firstinstallandimportthewebadministrationmodule、thenusetheiis:driveandcmdletStoccreateewebsites、configureaplicationpools、setbindings、andsignslcertificates for automated、repationsladministration。

IISでASP.NET機能を有効にします。 2。ASPNET_REGIIS-Iを管理者として実行して、ASP.NETを登録します。 3.アプリケーションプールで正しい.NETバージョンと統合パイプラインモードを設定します。 4.付与ウェブサイトフォルダーIIS_IUSRSおよびアプリケーションプールのアイデンティティの許可を読み取り、実行します。 5.オプションで、失敗した要求追跡とログをチェックすることを有効にします。 6.イベントビューアのファイルエラーとアプリケーションエラーを確認します。上記の手順を順番に実行することにより、IISのインストール後に発生する「サーバーアプリケーションエラー」を解決し、ASP.NETがアプリケーションプールを正しく登録および構成し、最終的にWebサイトを正常に実行することを確認できます。

phpをインストールし、php.iniを構成して、必要な拡張機能を有効にします。 2。IISでCGI関数を有効にします。 3.PHPをIISマネージャーを介してFASTCGIアプリケーションとして登録し、 *.PHPマッピングを追加します。 4. info.phpテストファイルを作成して構成を確認し、許可とパスが正しいことを確認し、必要に応じてIISを再起動します。

要求のサイズとURLの制限を確認し、web.configでmaxallowedcontentlength、maxrequestlength、maxurl、maxquerystringを調整して、制限問題を解決します。 2.無効な要求ヘッダーまたはエンコーディングを確認し、フィドラーまたは失敗したリクエストを使用して、間違ったヘッダーを追跡および識別し、修正します。 3. HTTPS/SSLの問題のトラブルシューティング、クライアントがHTTPSを使用し、SNIを正しく構成し、バインディングマッチを持っていることを確認します。 4.モデルの結合エラーを避けるために、要求本体が正しくフォーマットされ、コンテンツタイプが一致していることを確認します。 5。URLで特殊文字をエンコードし、使用することを慎重に使用します

IISの特定のWebサイトのロギングをオフにするには、最初にIISマネージャーでターゲットWebサイトを見つけ、「ログ記録」設定を入力します。1。「ログスケジュール」を「なし」に設定します。古いログは自動的に削除されず、手動でクリーニングする必要があることに注意してください。同時に、ログパスが共有されているかどうか、許可が正常かどうか、および監視ツールがログに依存して後続の問題を回避するかどうかを確認します。
