2011-08-09 18 views
7

Por lo tanto, la situación es que en una página determinada hay muchas solicitudes HTTP y cada una de ellas necesita actualizar una única cookie compartida. No hay posibilidad de controlar cuántas solicitudes se realizan por página, pero de manera realista puede haber más de 10.Estrategia para mitigar las condiciones de carrera al actualizar las cookies?

Hemos visto problemas donde solo la última solicitud http actualiza con éxito la cookie y me dicen que esto se debe a las dependencias del navegador.

¿Es este un problema conocido en general y existen estrategias para mitigar el riesgo?

Respuesta

1

Una estrategia es evitar almacenar información mutable en la cookie misma, y ​​en su lugar hacer que la cookie sea un identificador de algún tipo que identifique un registro en alguna base de datos de algún tipo. Luego, su servidor actualiza la información en la base de datos (del lado del servidor), en lugar de cambiar el valor de la cookie.

+1

Sí, tenía miedo de eso, pero creo que es mi única opción. – Dan

+0

Si el servidor escribe la información mutable en la cookie, ¿no terminarías con la misma condición de carrera en la que se establecerían múltiples identificadores diferentes para el mismo navegador? – Nick

0

¿Qué tipo de solicitudes son estas? Los únicos en los que no se controla el orden son cosas como imágenes, script src e iframe. Y no debería actualizar las cookies para ninguno de esos.

Debe actualizar el cocinero en la página principal, la que tiene la fuente HTML. Después de eso, si tienes solicitudes de ajax, tienes el control del pedido, por lo que no deberías tener un problema allí.

+0

Son fragmentos de código que las personas pueden colocar en su sitio, para una variedad de funciones diferentes. Por lo tanto, no tengo el control de cómo se implementan en el código. ¿Por qué no debería estar actualizando las cookies cuando se llama una imagen (por ejemplo, un píxel)? En definitiva, un conjunto de solicitudes HTTP simultáneas para cosas como imágenes (no secuencias de comandos) da como resultado que las cookies fallen debido a las condiciones de la carrera. Parece que no hay una solución fácil para el lado del servidor. – Dan

Cuestiones relacionadas