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.

Solicitud CORS fallando solo en Firefox.

Estoy trabajando con Unity WebGL y tengo un problema con CORS cuando el cargador intenta descargar los archivos unityweb necesarios para la compilación.

El error:

Se bloqueó la solicitud de origen cruzado: la directiva del mismo origen no permite leer el recurso remoto en “enlace de archivo”. (Motivo: solicitud CORS no exitosa). Código de estado: (nulo).

El código:

if (window.msJsonUrl && typeof window.createUnityInstance !== 'undefined' && !AppManager.gameInstace)
        {
            var request = new XMLHttpRequest();
            request.open("GET", window.msJsonUrl, false);
            request.send(null)
            var data = JSON.parse(request.responseText);
            var buildUrl = window.msJsonUrl.substring(0, window.msJsonUrl.lastIndexOf("/")) + "/";
            var config = {
                dataUrl: buildUrl + data.dataUrl,
                frameworkUrl: buildUrl + data.wasmFrameworkUrl,
                codeUrl: buildUrl + data.wasmCodeUrl
            };
            AppManager.gameInstace = window.createUnityInstance(document.getElementById(AppManager.VIEWER_ID), config, this.onProgress.bind(this)
            ).then((unityInstance) => {
                AppManager.gameInstace = unityInstance
                this.canvas = AppManager.gameInstace.Module.canvas
                this.onProgress(1)
             }).catch((message) => {
                alert(message);
            });
            this.setState({objectIsLoading: false, rendererIsLoading: true})
        }

Funciona en todos los demás navegadores excepto en Firefox.

¿Alguna idea de por qué?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Este error se produce debido a una función de seguridad del navegador conocida como Same Origin Policy, que restringe las páginas web para realizar solicitudes a un dominio diferente al que sirvió la página. Para solucionar este problema, es necesario configurar un servidor proxy o configurar el lado del servidor para habilitar CORS (Cross-Origin Resource Sharing). Sin embargo, es importante tener en cuenta que habilitar CORS en el lado del servidor puede presentar riesgos de seguridad. Por lo tanto, se recomienda consultar con el equipo del lado del servidor antes de implementar cualquier cambio. Además, es recomendable utilizar el protocolo HTTPS para una seguridad adicional. También es posible que este problema sea específico de Firefox, que tiene una implementación más estricta de Same Origin Policy. Para solucionarlo, puedes intentar agregar encabezados CORS a la respuesta del servidor o utilizar una solución específica de Firefox como la extensión CORS Everywhere.

Comments are closed.