Error g3w3 al mostrar formulario de encuesta kolla

Buenos días! Tenemos un inconveniente que ya esta solucionado pero quisiéramos entender que pasa y si la solución es viable o existe otra que evite tocar el código.
Desde g3w3 le aparece la encuesta al alumno pero no visualiza el formulario para completar los campos.
Hago mención a el siguiente foro porque tiene las mismas características, mismo error : https://foro.comunidad.siu.edu.ar/index.php?topic=22434.0
Les comento, revisamos las configs y aparentemente según la documentación esta todo bien.

g3w3 config.php :
‘url_kolla’ => ‘https://encuestas.unau.edu.ar’,

instancia.ini:
full_url = “https://encuestas.unau.edu.ar
protocolo_url_post_form_externo = “https”

La solucion puntual que se hizo fue modificar el codigo en la validacion de protocolos en: src/siu/modelo/entidades/encuestas_kolla.php

//ORIGINAL

  static function es_protocolo_compatible() {

                if (\OneLogin_Saml2_Utils::isHTTPS()) {
                        $protocolo_guarani = 'https';
                } else {
                        $protocolo_guarani = 'http';
                }
                kernel::log()->add_debug("=== protocolo_guarani ===", $protocolo_guarani);

                static::$url_kolla = kernel::proyecto()->get_url_kolla();
                $protocolo_kolla = strtolower(parse_url(static::$url_kolla, PHP_URL_SCHEME));
                kernel::log()->add_debug("=== protocolo_kolla ===", $protocolo_kolla);

                return ($protocolo_guarani == $protocolo_kolla);
        }

//MODIFICADO

static function es_protocolo_compatible() {

                if (\OneLogin_Saml2_Utils::isHTTPS()) {
                        $protocolo_guarani = 'https';
                } else {
                        $protocolo_guarani = 'https';  /// ACA LE CAMBIE EL PROTOCOLO
                }
                kernel::log()->add_debug("=== protocolo_guarani ===", $protocolo_guarani);

                static::$url_kolla = kernel::proyecto()->get_url_kolla();
                $protocolo_kolla = strtolower(parse_url(static::$url_kolla, PHP_URL_SCHEME));
                kernel::log()->add_debug("=== protocolo_kolla ===", $protocolo_kolla);

                return ($protocolo_guarani == $protocolo_kolla);
        }

El resultado fue exitoso! Desde ya muchas gracias! Adjunto Log.

Estamos en las versiones:
Guarani 3.20
Kolla 4.5.0


20221118_230231___2509.log.txt (2.01 KB)

Hola Gerardo,

Se valida que el protocolo de Kolla y Guaraní sean compatibles, ya que la encuesta de Kolla se carga en un IFRAME y si los protocolos no coinciden dará el error de Cross-Origin.

¿porque tuviste que modificar la función es_protocolo_compatible?
¿Guaraní esta en https pero la función \OneLogin_Saml2_Utils::isHTTPS() devuelve false?
¿Guaraní esta detrás de un proxy reverso?, en tal caso ver los siguientes foros:
https://foro.comunidad.siu.edu.ar/index.php?topic=24404.msg111089

saludos.
2

Buenos Dias!!

Muchas Gracias por tu respuesta! Sí, estamos dentras de un proxy reverso. Me comunico con nuestro equipo IT para que verifique las configs desde ese lado!!

Saludos.

Hola Gerardo,

Sí, estamos detrás de un proxy reverso.

Entonces lo vas a solucionar con este otro foro: Conexion guarani 3w - kolla - nº 8 por lleonardis - SIU-Guaraní - Técnicos - Foro Comunidad SIU

En src/siu/modelo/entidades/encuestas_kolla.php quedaría de la siguiente forma:


	static function es_protocolo_compatible() {

		if (static::isHTTPS()) {
			$protocolo_guarani = 'https';
		} else {
			$protocolo_guarani = 'http';
		}
		kernel::log()->add_debug("=== protocolo_guarani ===", $protocolo_guarani);

		static::$url_kolla = kernel::proyecto()->get_url_kolla();
		$protocolo_kolla = strtolower(parse_url(static::$url_kolla, PHP_URL_SCHEME));
		kernel::log()->add_debug("=== protocolo_kolla ===", $protocolo_kolla);

		return ($protocolo_guarani == $protocolo_kolla);
	}

	static function isHTTPS()
	{
		$isHttps =
			(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')
			|| (isset($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] === 'https')
			|| (isset($_SERVER['SERVER_PORT']) && (int) $_SERVER['SERVER_PORT'] === 443)
			|| (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')
		;
		return $isHttps;
	}

saludos.
2