guarani 320 problemas con webservices

Buenos días!

Estamos teniendo problemas con los webservice de guaraní

nos deja conectarnos con los usuarios pero cuando queremos usar alguno nos da error

TypeError: NetworkError when attempting to fetch resource.
Error de configuración del server

paso la configuracion de los archivos

servidor.ini
recursos_usuarios.php

gracias!


rest.zip (1.56 KB)

Hola Luciana,

TypeError: NetworkError when attempting to fetch resource.

Parece ser un error de Cross-Origin Resource Sharing (CORS) que da el Swagger, vos tenes la URL para acceder al Swagger con https, pero los web services se están accediendo con http.

Revisa esta documentación, donde dice:
Se debe configurar la directiva https en el archivo <path_gestion>/instalacion/web_server.ini, si es https poner en “on” sino en “off”, ej usando https:


[server_config]
https = "on"

Referencia:
https://github.com/swagger-api/swagger-editor/issues/2077

saludos.
2


Screenshot from 2022-07-26 09-48-32.png

Screenshot from 2022-07-26 09-48-32.png

Hola Luciana,

Tengo una idea de donde puede venir el error, vos tenes todas las URLs con https ya que usas un balanceador de cargas/proxy reverso, pero el swagger no te esta reconociendo el protocolo https. Si vas a la url https:///rest/v1/api-docs vas a ver que dice:


{
    "swagger": "2.0",
    "info": {
        "title": "Referencia de API para guarani",
        "version": "v1.0"
    },
    "basePath": "\/guarani\/3.20\/rest\/v1",
    "produces": [
        "application\/json"
    ],
    "schemes": [
        "http"
    ],

En schemes dice http.

Podes probar en un entorno de pruebas modificar la función get_esquema de vendor/siu-toba/rest/src/SIUToba/rest/http/request.php para que quede de la siguiente forma:


    /**
     * Devuelve el esquema (https or http).
     *
     * @return string
     */
    public function get_esquema()
    {
        if (!isset($this->protocol)) {
			$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')
			;
            $this->protocol = ($isHttps) ? 'https' : 'http';
        }
        return $this->protocol;
    }

Referencias:
https://gitlab.siu.edu.ar/siu/soporte/-/issues/175
https://www.designcise.com/web/tutorial/how-to-check-for-https-request-in-php#identifying-the-https-protocol-when-using-a-load-balancer

saludos.
2

Gracias Leo, efectivamente esto solucionó la conexión de los webservices