es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué configuraciones de Javafx WebEngine puedo cambiar para permitir que Google me permita cargar la página de inicio de YouTube?

Básicamente quiero que mi WebEngine de JavaFX muestre la página de inicio de YouTube. Mi código para iniciar el navegador se muestra a continuación.

browserWebView.getEngine().setJavaScriptEnabled(true);
WebConsoleListener.setDefaultListener(new WebConsoleListener() {
    @Override
    public void messageAdded(WebView webView, String message, int lineNumber, String sourceId) {
        System.out.println("Consola: [" + sourceId + ":" + lineNumber + "] " + message);
    }
});
browserWebView.getEngine().load("https://www.youtube.com/");

Lo que obtengo es una página de inicio de YouTube que se ve así unloadedYoutubeHomePage

El WebConsoleListener es un depurador que me ayuda a descubrir por qué la página de inicio de YouTube no se está cargando y devolvió esto:

Consola: [null:0] Directiva de Content-Security-Policy no reconocida 'require-trusted-types-for'.

Consola: [null:0] Se ha rechazado mostrar 'https://accounts.google.com/ServiceLogin?service=youtube&uilel=3&passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction%3Dhandle_signin%26app%3Ddesktop%26hl%3Den%26next%3D%252Fsignin_passive%26feature%3Dpassive&hl=en' en un marco porque estableció 'X-Frame-Options' en 'DENY'.

He estado buscando soluciones para esto durante bastante tiempo y sería genial si alguien pudiera ayudarme con mi problema. Además, el uso de URLs de video de YouTube incrustados realmente no es una solución para mí, ya que me gustaría cargar la página de inicio de YouTube en sí, no los videos que muestra.

Información adicional:
Tipo de sistema: sistema operativo de 64 bits, procesador basado en x64
Plataforma Java: JDK 11
Usando la versión de JavaFX: javafx-sdk-17.0.1

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la página web no se está cargando debido a dos problemas:

    1. Directiva ‘require-trusted-types-for’ no reconocida en la política de seguridad de contenido (CSP): Este error ocurre cuando una página web establece una Política de Seguridad de Contenido (CSP) que requiere habilitar tipos de confianza, pero el navegador no lo admite. Una forma de resolver esto es desactivar CSP con fines de prueba añadiendo el siguiente argumento de línea de comandos al ejecutar la aplicación Java: -Dcom.sun.javafx.webkit.prism.secure=false
    2. Se ha negado la visualización de ‘https://accounts.google.com/ServiceLogin?service=youtube&uilel=3&passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26app%3Ddesktop%26hl%3Den%26next%3D%252Fsignin_passive%26feature%3Dpassive&hl=en’ en un marco porque ha establecido ‘X-Frame-Options’ como ‘DENY’: Este error ocurre cuando una página web establece la cabecera de respuesta HTTP ‘X-Frame-Options’ como ‘DENY’, lo cual impide que la página web se muestre en un iframe. Desafortunadamente, no hay forma de que WebEngine de JavaFX anule esta configuración, ya que es establecida por el servidor que aloja la página web.

    Una posible solución alternativa es utilizar una URL diferente para la página de inicio de YouTube, como ‘https://www.youtube.com/?disable_polymer=true’. Esta URL carga la versión clásica de la página de inicio de YouTube, la cual no tiene la cabecera X-Frame-Options establecida como ‘DENY’. Alternativamente, podrías intentar utilizar un motor de navegador diferente, como Chromium o Gecko, los cuales pueden tener un manejo distinto de la cabecera X-Frame-Options.

Comments are closed.