URL エンコードされたスラッシュを含む GET リクエストの送信
URL エンコードされたスラッシュ (例: 、http://example.com//)、Web クライアントが無効な URL に変換するという問題が発生する可能性があります。 (例: http://example.com//)。
この問題を解決するには、次のコードでパスとクエリを強制的に正規として扱うことで回避策を提供します。
Uri uri = new Uri("http://example.com/%2F"); ForceCanonicalPathAndQuery(uri); using (WebClient webClient = new WebClient()) { webClient.DownloadData(uri); } void ForceCanonicalPathAndQuery(Uri uri){ string paq = uri.PathAndQuery; // need to access PathAndQuery FieldInfo flagsFieldInfo = typeof(Uri).GetField("m_Flags", BindingFlags.Instance | BindingFlags.NonPublic); ulong flags = (ulong) flagsFieldInfo.GetValue(uri); flags &= ~((ulong) 0x30); // Flags.PathNotCanonical|Flags.QueryNotCanonical flagsFieldInfo.SetValue(uri, flags); }
このスクリプトは、Uri オブジェクトの内部フラグを操作することで機能し、パスとクエリが正規のものとして扱われるようにし、実行中にそれ以上の変換を必要としません。リクエスト。
以上がURL エンコードされたスラッシュを含む GET リクエストを正しく送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。