URL エンコードされたスラッシュを含む HTTP GET リクエスト
.NET で URL エンコードされたスラッシュを含む URL にアクセスすると、問題が発生します。 URL エンコードを保持する代わりに、フレームワークは URL エンコードを正規化しようとするため、無効な HTTP リクエストが発生します。
この問題を解決するには、次の回避策があります。
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; FieldInfo flagsFieldInfo = typeof(Uri).GetField("m_Flags", BindingFlags.Instance | BindingFlags.NonPublic); ulong flags = (ulong) flagsFieldInfo.GetValue(uri); flags &= ~((ulong) 0x30); flagsFieldInfo.SetValue(uri, flags); }
このハックは内部 URI を操作します。フラグを使用して URL エンコードを維持し、URL エンコードされたスラッシュを含む HTTP GET リクエストを許可します。ただし、このアプローチは将来のフレームワーク バージョンと互換性がなくなる可能性があることに注意してください。
以上が.NET で URL エンコードされたスラッシュを使用して HTTP GET リクエストを行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。