¿Cómo establece Facebook las cookies entre dominios para iFrames en páginas de canvas?

Estaba navegando por la documentación de Facebook leyendo sobre aplicaciones de canvas y encontré una aplicación de ejemplo: http://developers.facebook.com/docs/samples/canvas . Sin embargo, al leer su ejemplo, me confundí mucho sobre el uso de cookies en la aplicación iframe.

Una pequeña historia de fondo …

Ya había jugado con el uso de iframes para widgets incrustados (no relacionados con Facebook) y descubrí que algunos navegadores (Chrome, Safari, etc.) tienen políticas de cookies estrictas y no permiten el uso de cookies entre dominios en iframes (Firefox, por otro lado, permite que iframes establezca cookies entre dominios en iframes). Por ejemplo, si foo.com tiene un iframe con src="http://bar.com/widget" el widget iframe no podrá establecer ninguna cookie para bar.com y, por lo tanto, tendrá problemas para persistir en el estado dentro del iframe: bar.com interpretará cada solicitud (incluidas las solicitudes ajax) del widget como una nueva solicitud sin una sesión establecida. Luché y encontré una forma de evitar esto usando JSONP y javascript para establecer cookies para foo.com …

… ¿y entonces?

Bueno, estaba mirando la aplicación de Facebook iframe canvas de ejemplo y noté que su aplicación (alojada en runwithfriends.appspot.com) puede establecer una cookie, u , con la identificación del usuario actual junto con algunos otros parámetros para los runwithfriends dominio .appspot.com. Envía esta cookie con cada solicitud … ¡y funciona tanto en Chrome como en Firefox! WTF? ¿Cómo evade Facebook las restricciones de cookies entre dominios en Chrome?

(Ya sé la respuesta ahora, pero pensé que esto podría ser útil para cualquiera que esté luchando por descubrir lo mismo: publicaré la respuesta a continuación).

Entonces iFrame en realidad no está configurando la cookie u para el dominio runwithfriends.appspot.com. Lo que hace Facebook es crear un formulario,

y usa javascript para enviar el formulario en la carga de la página. Como el objective del formulario es el iframe, no vuelve a cargar la página … solo carga el iframe con la respuesta del POST. Aparentemente incluso Chrome y otros navegadores con estrictas políticas de cookies establecen cookies para solicitudes de dominios cruzados si son solicitudes POST …