PHP: Android pierde información de sesión y cookie cuando usa un reproductor de video incorporado

Después de no encontrar una solución todo el día, lo pruebo aquí en SO:

Guión: Un cliente puede iniciar sesión y acceder a archivos de video. Proporciono los archivos de video usando pseudo streaming PHP (solicitudes de rango de bytes). Los archivos de video están dentro de una carpeta protegida.

Preparar:

loading.php proporciona el código de inserción de video html5:

<video ...>
   <source src="videoprovider.php?secure=CODE" type="video/webm">
</video>

videoprovider.php obtiene el código encuentra el video correcto y lo devuelve en rangos de bytes

Ambos archivos PHP verifican que el cliente haya iniciado sesión. Para este propósito, estoy usando modx al comienzo de cada archivo con:

require_once DOCUMENT_ROOT.'modx/includes/config.inc.php';
startCMSSession(); // does session_start()

Entonces puedo acceder a los datos de $ _SESSION que se han establecido en el momento del inicio de sesión.

Todo funciona muy bien en el escritorio, pero no para dispositivos Android. Los dispositivos Android solo muestran el indicador de carga de video y están atascados.

Imprimí el $ _SESSION y descubrí que tan pronto como Android intenta reproducir el archivo de video (varias solicitudes de bytes de rango), la primera solicitud indica que $ _SESSION está ahí, la segunda solicitud indica que ya no hay $ _SESSION.

No pude rastrear más el error. ¿Cuál es el problema de Android? ¿Por qué puede leer la sesión y luego ya no?


Algunas notas:

Tengo todos los archivos correctamente vinculados, no 404 que podría matar la sesión (al menos no en la consola del desarrollador web, nover qué está haciendo Android).

Llamando a startCMSSession (); varias veces, para cada solicitud de rango de video, no debe alterar la sesión.

Funciona en todos los navegadores de escritorio.


Actualizar:

Traté de usar cookies, pero descubrí que incluso las cookies no se pasan, por lo que parece no ser un problema relacionado con Modx, sino unproblema de Android completo. Actualicé el título de la pregunta de "¿Android pierde $ _SESSION creado por MODx Evo?" a "PHP: Android pierde información de sesión y cookie cuando se usa un reproductor de video incorporado"Este es probablemente el mismo problema:Android 2.3 no pasa información de cookies para la etiqueta de audio html5 Obtener solicitud Citando:

El problema es que el navegador no envía la solicitud de la etiqueta de audio por sí mismo, sino que lo delega a stagefright. Tristemente, Stagefright (en Android 2.3) no envía ninguna cookie en absoluto ...

Interesante:¿Los navegadores móviles envían cookies httpOnly a través de la etiqueta de audio HTML5?

Entonces, ¿cómo resolver esto? (Mi dispositivo de prueba es Android 4.)

Respuestas a la pregunta(0)

Su respuesta a la pregunta