HttpClient Cookies löschen?


18.03.2024, 14:29

Ich habe mich glaube ziemlich undeutlich ausgedrückt. 

Als Kontext: Für einen Wrapper einer Web API muss ich die Cookies die von der Domain aus per Set-Cookie gesetzt wurden löschen, allerdings muss bei dem einzigen Weg den ich bisher dafür gefunden habe wie bereits im Code sichtbar die HttpClient Instanz mit dem Container erstellt werden. Jedoch soll der Wrapper nicht nur selber diese Instanz erstellen sondern auch eine bereits vorhandene Instanz verwenden können. Deshalb muss ich irgendwie allein von der HttpClient Instanz aus auf den CookieContainer zugreifen.

2 Antworten

Du kannst beim Verschicken von Daten (via SendAsync) die Request Message mit Headers ausstatten oder über das DefaultRequestHeaders-Property Modifikationen vornehmen.

Um sicherzustellen, dass der selbst gesetzte Cookie-Header nicht ignoriert wird, solltest du beim Anlegen des Clients dennoch eine HttpClientHandler-Instanz überreichen, für die das UseCookies-Property auf false gesetzt wurde (lies dazu auch hier).

Wenn der Client bereits existiert, musst du eine neue Instanz erstellen, die dessen Konfiguration übernimmt.

Kennt jemand vielleicht eine Weg wie man die  CookieContainer Instanz oder die  HttpClientHandler Instanz vom HttpClient abrufen kann?

Das ist nicht vorgesehen. Das Handler-Objekt wird intern in einem privaten Feld (der Basisklasse von HttpClient) gespeichert, ohne dazu eine direkte, öffentliche Schnittstelle zu gewährleisten.

Suiram1 
Fragesteller
 18.03.2024, 14:42
dennoch eine HttpClientHandler-Instanz überreichen, für die das UseCookies-Property

Das ist ja gerade der Punkt das ich diese nicht extra verwenden will. Ich will ja eigentlich auch nicht auf diese zugreifen. Ich benötige lediglich eine Möglichkeit die vom Server gesetzten Cookies zu löschen.

0
regex9  18.03.2024, 15:23
@Suiram1

Probiere es aus, ohne das Property zu setzen. Entweder es klappt oder es klappt nicht.

0
Suiram1 
Fragesteller
 18.03.2024, 15:35
@regex9

Ich möchte ja einfach nur die Cookies die gespeichert wurden speichern.

auch eine bereits vorhandene Instanz verwenden können

Da hab ich dann ja keinen Zugriff auf den Handler

0

Du kannst wohl das Gültigkeitsdatum des Cookies einfach auf einen Punkt in der Vergangenheit setzen.

Woher ich das weiß:Berufserfahrung – Softwareentwicklerin
Suiram1 
Fragesteller
 17.03.2024, 21:01

Wenn ich nur die HttpClient Instanz habe, habe ich keine Möglichkeit auf auf die CookieContainer Instanz zuzugreifen und kann somit auch nicht in irgendeiner Hinsicht auf die Cookies zugreifen.

0
Lamanini  17.03.2024, 21:57
@Suiram1

Sicher, dass du nicht einfach auf die Instanz von „cookies“ zugreifen kannst, die du da schon hast, da es PassByRef ist?

0
Suiram1 
Fragesteller
 18.03.2024, 14:29
@Lamanini

Ich habe die Frage mal ergänzt. Hoffentlich hilft das

0