Ich versuche, eine Autorisierung auf einer kyrillischen Domain mit dem WebClient durchzuführen. Die Autorisierung durchläuft wenige Stufen mit Weiterleitungen zwischen normalen und Punicode-Domänen. Das Problem ist, dass HttpWebRequest keine Cookies im zugewiesenen CookieContainer speichern kann, wenn es von der Punycode-Domain gesetzt wurde. Zum Beispiel wird dieser Code CookieException auslösen.CookieContainer speichert keine Cookies für internationalisierte Domain-Namen
var cookie = new Cookie("test_cookie", "test_value", "/", ".xn----7sbcca6bi0ak9b0a6f.xn--p1ai");
var container = new CookieContainer().Add(cookie);
Das Problem wird durch die Tatsache verschärft, dass die Antwort Cookie Umleitungen auf eine andere Seite, das heißt nach WebClient.UploadValues (...) in WebClient.ResponseHeaders gibt es keine Cookie-Informationen setzt ausgeführt wurden.
ist unter dem normalen Genehmigungsverfahren (mit Browser)
Method Result Received Type URL RedirectURL Set-Cookie
POST 302 1,18 K text/html http://xn----7sbcca6bi0ak9b0a6f.xn--p1ai/admin/login http://xn----7sbcca6bi0ak9b0a6f.xn--p1ai/admin sess_id=.......; expires=Mon, 06-Jun-2016 07:20:57 GMT; Max-Age=31536000; path=/; domain=.xn----7sbcca6bi0ak9b0a6f.xn--p1ai; httponly
GET 302 722 text/html http://xn----7sbcca6bi0ak9b0a6f.xn--p1ai/admin /admin/orders
GET 200 200,00 K text/html http://xn----7sbcca6bi0ak9b0a6f.xn--p1ai/admin/orders
Gibt es eine Abhilfe?
Kann jemand bestätigen, dass es ein Fehler ist? Vielleicht sollte ich es auf https://connect.microsoft.com/VisualStudio/ melden? – Leff
Update: 1. IDN und IRI Verarbeitung muss in der Konfiguration aktiviert werden, um das oben beschriebene Verhalten zu reproduzieren. 2. Offensichtlich ist die interne Methode 'VerifySetDefaults' der Klasse' System.Net.Cookie' der Grund des Problems. Ich versuche herauszufinden, warum, aber "VerifySetDefaults" ist ziemlich kompliziert für mich. – Leff
Update: Es scheint, dass 'VerifySetDefaults' versucht, ein IDN mit seiner Punycode-Darstellung zu vergleichen, wenn es fehlschlägt, wird die Ausnahme ausgelöst. – Leff