Sto tentando di eseguire l'autorizzazione su un dominio cirillico utilizzando WebClient. L'autorizzazione passa attraverso alcune fasi con reindirizzamenti tra domini normali e punicoli. Il problema è che HttpWebRequest non può memorizzare cookie in CookieContaier assegnato se è stato impostato dal dominio punycode. Ad esempio, questo codice genererà CookieException.CookieContainer non memorizza i cookie per i nomi di dominio internazionalizzati
var cookie = new Cookie("test_cookie", "test_value", "/", ".xn----7sbcca6bi0ak9b0a6f.xn--p1ai");
var container = new CookieContainer().Add(cookie);
Il problema è aggravato dal fatto che la risposta che imposta biscotto reindirizza a un'altra pagina, vale a dire dopo WebClient.UploadValues (...) sono stati eseguiti non c'è alcuna informazione cookie nel WebClient.ResponseHeaders.
Di seguito è normale procedura di autorizzazione (utilizzando il 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
C'è qualche soluzione?
Qualcuno potrebbe confermare che si tratta di un bug? Potrebbe essere necessario segnalarlo a https://connect.microsoft.com/VisualStudio/? – Leff
Aggiornamento: 1. L'elaborazione IDN e IRI deve essere abilitata nella configurazione per riprodurre il comportamento sopra descritto. 2. Ovviamente, il metodo interno 'VerifySetDefaults' della classe' System.Net.Cookie' è la causa del problema. Sto cercando di capire perché, ma 'VerifySetDefaults' è abbastanza sofisticato per me. Aggiornamento – Leff
: Sembra che 'VerifySetDefaults' stia cercando di confrontare un IDN con la sua rappresentazione di punycode, quando fallisce viene lanciata l'eccezione. – Leff