Estoy desarrollando un sitio web donde los usuarios pueden reservar una mesa en un restaurante en línea. Todo funciona bien, excepto una cosa: cuando coloco la página de reserva en un iFrame en otro dominio, en muchos navegadores aparece un error Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>) . La pestaña Network -> Response en DevTools me dice que los datos de respuesta no se pudieron cargar porque la solicitud se redirigió.
Esta es la página que funciona bien: https://dev.table4u.de/dimostrazione
Aquí pongo la página en un iFrame para probar: https://www.restaurant-zukunft.de/iframe-test
Este error aparece en muchos navegadores, excepto en Firefox, ¿podría ser un problema con el formateo de los datos?
No, esto no es un problema relacionado con los datos. Es un problema con Chrome (y otro navegador). Es muy estricto cuando usas iframe . Cuando envía una solicitud POST a https://dev.table4u.de/index.php?option=com_tablebooking&task=search.getWorkingHours , puede comentar que no se envía la cookie.
No es lo mismo para Firefox:
Por lo tanto, su parte de back-end piensa que el cliente actual no es de confianza, por lo que redirige el enlace en lugar de proporcionarle el JSON que espera.
Chrome (y otros navegadores) evitan enviar cookies porque el dominio se cambia debido a la política de SameSite (puede verificar en Internet qué es exactamente). Esperaba www.restaurant-zukunft.de pero usa dev.table4u.de en la solicitud POST. Puede deshabilitar temporalmente este comportamiento en Chrome cambiando la siguiente bandera.
Puede encontrarlo en chrome://flags/ . Pero es una muy mala idea hacer esto. En su caso, intente usar el mismo dominio. O evite usar iframe si es posible.