Domanda

il RFC, biscotti individuali nel "Cookie" header HTTP possono essere separate da virgole nonché da virgola. Tuttavia, ASP.NET non analizza il caso virgole correttamente -. Non conta virgola come separatore, ma considera solo una parte del valore

Ad esempio Se un client invia un'intestazione Cookie: a=b, c=d, quindi l'applicazione ASP.NET vedrà solo un cookie denominato "un" con il valore "b, c = d".

Come caso speciale, la stessa cosa accade quando il client invia diverse intestazioni del biscotto (uno per ogni cookie) invece di combinare tutti i cookie in un colpo di testa. Dal punto di vista HTTP, questo è completamente valido, e in tal caso il valore effettivo dell'intestazione dovrebbe essere concatenazione dei valori di tutte le sue istanze separati da una virgola.

Qualcuno sa una soluzione (o forse una correzione?) Per questo? Ho assolutamente bisogno di ottenere questo lavoro, perché io non controllo il cliente.

P.S. E 'ironico che, in base al questa discussione , il NET built-in HTTP comportamento del cliente (aka HttpWebRequest) è esattamente l'opposto, e causa anche dei problemi. : -)

È stato utile?

Soluzione

Credo che la soluzione più semplice per ottenere il comportamento desiderato (a prescindere dalla correttezza standard) sarebbe quello di creare un HttpModule che avrebbe correttamente analizzare queste informazioni dal HttpContext.Request.Headers e il luogo informazioni corrette in HttpContext.Request.Cookies.

Altri suggerimenti

Sia RFC 2109 e RFC 2965 sono noti per non descrivere la realtà.

Si dovrebbe dare un'occhiata a draft-ietf-httpstate -Cookie che è un prodotto del lavoro del nuovo IETF httpstate gruppo di lavoro.

La versione si è collegato al è obsoleto. Questo documento HTTP State Management Mechanism è l'ultima e più grande e specifica e virgola. Si fa dire che le virgole devono essere accettati per la compatibilità futura, ma questo non è richiesto:

  

Nota: Per compatibilità all'indietro, il separatore nell'intestazione cookie      è punto e virgola (;) in tutto il mondo. Un server dovrebbe accettare anche la virgola (,)      come separatore tra cookie-valori per la futura compatibilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top