Ho difficoltà a capire qual è lo standard (o ce n'è uno?) Per codificare/decodificare i valori dei cookie indipendentemente dalle piattaforme di back-end.Standard di codifica/decodifica cookie agnostici linguistici
Secondo RFC 2109:
il valore è opaco per il programma utente e può essere qualsiasi cosa, il server di origine sceglie di inviare, possibilmente in una codifica ASCII stampabile server selezionato. "Opaco" implica che il contenuto è di interesse e pertinenza solo per il server di origine. Il contenuto può, infatti, essere leggibile da chiunque tenti l'intestazione Set-Cookie.
che suona come "il server è il capo" e decide a prescindere dalla codifica. Ciò rende piuttosto difficile impostare un cookie, ad esempio il backend PHP e leggerlo da Python o Java o qualsiasi altra cosa, senza scrivere alcuna gestione manuale di codifica/decodifica su entrambi i lati.
Supponiamo di avere un valore che deve essere codificato. Il russo /"печенье (*} значения"/
significa "valore del cookie" con alcuni caratteri aggiuntivi alfanumerici.
Python:
Quasi tutti i server WSGI fa lo stesso e usa SimpleCookie classi di Python che codifica a/decodifica da octal literals anche se molti dice che octal literals are depreciated in ECMA-262, modalità rigorosa. Wtf?
Quindi, il nostro valore del cookie grezzo diventa "/\"\320\277\320\265\321\207\320\265\320\275\321\214\320\265 (*} \320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\"/"
Node.js:
Non ho ancora testato a tutti, ma io sono solo indovinare un backend JavaScript sarebbe farlo con nativi encodeURIComponent e decodeURIComponent funzioni che usa hexadecimal di escaping/unescaping?
PHP:
PHP applica urlencode ai valori dei cookie che è simile a encodeURIComponent ma non esattamente la stessa cosa.
Quindi il valore grezzo diventa; %2F%22%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D1%8C%D0%B5+%28%2A%7D+%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%22%2F
che non è nemmeno racchiuso tra virgolette.
Tuttavia; se la variabile JavaScript value
ha il valore codificato PHP sopra, decodeURIComponent(value)
dà /"печенье+(*}+значения"/
, vedere "+" caratteri al posto degli spazi ..
Qual è la situazione in Java, Ruby, Perl e .NET? Quale lingua segue (o il più vicino) al comportamento desiderato. In realtà, esiste uno standard definito da W3?
+1 per l'inchiostro invisibile! Sebbene i cookie possano essere utilizzati per condividere dati strutturati tra server su uno stesso dominio. – flup
sì, buon esempio. mi piacerebbe dare la grazia a questo, se ha risposto alla domanda in ** grassetto ** parte. comunque, i cookies dovrebbero essere in grado di essere letti su tutta la piattaforma qualunque sia il tipo di dati che trasportano .. triste e dolorante nel culo. – kirpit
Penso di aver finalmente capito la tua domanda e di aver modificato la mia risposta di conseguenza. – Hazzit