共用方式為


HttpClient EventSource 事件中的 URI 查詢和片段修訂

在 .NET 9 中,HttpClientSocketsHttpHandler 所發出 EventSource 事件的預設行為 System.Net.HttpEventSource 已修改為清除 URI 的查詢和片段部分。 這項變更可藉由防止記錄查詢字串中包含的潛在敏感性資訊,同時將修訂的效能成本保持在最低,藉此增強隱私權。 如有必要,您可以覆寫此行為。

導入的版本

.NET 9 預覽 7

先前的行為

先前,由 HttpClientSocketsHttpHandler 包含的查詢字串資訊發出的事件,可能會不小心公開敏感性資訊。

新的行為

隨著 dotnet/runtime#104741中的變更,查詢和片段部分預設會以 事件中的 字元取代。 這項變更會影響特定事件和參數,例如 RequestStart 中的 pathAndQuery,以及 Redirect中的 redirectUri

中斷性變更的類型

此變更為行為變更

變更原因

這項變更的主要原因,是藉由降低不小心記錄敏感性資訊的風險來增強隱私權。 查詢字串通常包含敏感數據,並預設會從記錄中加以修訂,有助於保護此資訊。 為了保持實作簡單且有效率,片段部分也會進行清除。

如果您在取用 HttpClientSocketsHttpHandler 事件時需要查詢字串資訊,而且確信可以放心地這麼做,您可以透過下列三種方式之一設定 AppContext 參數,以全域方式啟用查詢字串記錄:

  • 在專案檔中。

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" />
    </ItemGroup>
    
  • 在 runtimeconfig.json 檔案中。

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • 透過環境變數。

    DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTION 設定為 true 或 1。

否則,不需要採取任何動作,且預設行為將有助於增強應用程式的隱私權層面。

注意

此參數也會停用默認 IHttpClientFactory 記錄中的查詢字串修訂。 如需詳細資訊,請參閱 IHttpClientFactory 記錄中的 URI 查詢修訂。

受影響的 API