2011-04-22 8 views
5

jquery.cookie recupera el valor utilizando decodeURIComponent. https://github.com/carhartl/jquery-cookie/blob/master/jquery.cookie.js#L89Codificación de carriles de cookie no compatible con JavaScript decodeURIComponent

Rieles cookie almacena llamando

@set_cookies.each { |k, v| ::Rack::Utils.set_cookie_header!(headers, k, v) 
if write_cookie?(v) } 

Como se puede ver el estante util reemplaza espacios en blanco con un signo más.

https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L18

Si uso encodeURIComponent de Javascript a continuación, el valor codificado para 'hola mundo' es

"hola% 20world"

Sin embargo Rails es el almacenamiento de valor de la cookie como

" hola + mundo "

¿Quién tiene razón?

¿Dónde puedo ver lo que dicen las especificaciones sobre el almacenamiento del valor de la cookie?

Respuesta

2

No estoy seguro si esta pregunta se ha abandonado, pero recientemente me encontré con un problema similar.

Las cookies se definen en RFC2109: http://www.ietf.org/rfc/rfc2109.txt El estándar se refiere a RFC2068 para algunas definiciones o caracteres especiales, etc.: http://www.ietf.org/rfc/rfc2068.txt

Por lo que yo puedo decir, sólo define que no se puede utilizar caracteres reservados en el valores de cookie. No parece definir el esquema de codificación que debe usar. es decir, cualquiera está bien, siempre y cuando lo haga de manera consistente.

En su código de cookie jQuery, puede especificar la opción 'raw', que no hará las cosas decodeURIComponent, lo que le permite decodificarlo como desee.

Cuestiones relacionadas