次の方法で共有


HttpClient EventSource イベントでの URI クエリの再アクション

.NET 9 では、HttpClient およびSocketsHttpHandler (EventSource名: System.Net.Http) によって出力されるEventSource イベントの既定の動作が、クエリ文字列をスクラブするように変更されています。 この変更により、クエリ文字列に含まれる可能性のある機密情報がログに記録されないようにすることで、プライバシーが強化されます。 必要に応じて、この動作をオーバーライドできます。

導入されたバージョン

.NET 9 Preview 7

以前の動作

以前は、 HttpClient および SocketsHttpHandler によって生成されたイベントにはクエリ文字列情報が含まれていました。これは、誤って機密情報を公開する可能性があります。

新しい動作

dotnet/runtime#104741 の変更により、クエリ文字列は既定でHttpClientイベントとSocketsHttpHandlerイベントの*文字に置き換えられます。 この変更は、RequestStartpathAndQueryRedirectredirectUriなど、特定のイベントとパラメーターに影響します。

破壊的変更の種類

この変更は、動作変更です。

変更理由

この変更の主な理由は、機密情報が誤ってログに記録されるリスクを減らすことでプライバシーを強化することでした。 多くの場合、クエリ文字列には機密データが含まれており、既定でログから編集すると、この情報が保護されます。

HttpClientまたはSocketsHttpHandlerイベントを使用するときにクエリ文字列情報が必要で、安全であると確信できる場合は、AppContext スイッチを 3 つの方法のいずれかで設定することで、クエリ文字列のログ記録をグローバルに有効にすることができます。

  • プロジェクト ファイルで。

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" />
    </ItemGroup>
    
  • runtimeconfig.json ファイルで。

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • 環境変数を利用して。

    DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTIONtrue または 1 に設定します。

それ以外の場合は、アクションは必要ありません。既定の動作は、アプリケーションのプライバシーの側面を強化するのに役立ちます。

Note

このスイッチは、既定の IHttpClientFactory ログのクエリ文字列の編集も無効にします。 詳細については、IHttpClientFactory ログ URI クエリの編集を参照してください。

影響を受ける API