Pregunta
· 10 jun, 2025

Error en webgateway: Protocol Error between the Web Gateway and InterSystems IRIS

He creado un nuevo stack de Docker con WebGateway e IRIS for Health 2025.1. He mapeado los puertos de WebGateway de la siguiente manera:

  • 8743:443
  • 8780:80

Puedo acceder al portal IRIS a través del 8743 sin problemas.

También he creado un repositorio FHIR y puedo acceder a él a través del puerto 8743.

Tengo una aplicación web, en otro servidor con otro dominio, que se conecta a este repositorio de FHIR. He configurado en el endpoint de FHIR el origen permitido para el dominio de esta aplicación. Sin embargo, cuando intento conectarme desde esta aplicación al repositorio de FHIR, aparece este error en el Webgateway:

Protocol Error between the Web Gateway and InterSystems IRIS

Esto es una segunda instancia que estoy configurando; con la primera no tuve este error. ¿Podría ser porque la primera instancia se ejecuta en el puerto 8443? ¿O quizás sea por la versión 2025.1? No sé qué hacer...

Comentarios (8)2
Inicie sesión o regístrese para continuar

No he podido encontrar información sobre este error específico ("Protocol Error between the Web Gateway and InterSystems IRIS") en los documentos consultados. Si reformulas tu consulta o buscas otras maneras de expresar el problema, puedo intentar de nuevo. También puedes explorar los siguientes recursos:

  1. Web Gateway Guide.
  2. Configuración de acceso del Web Gateway.
  3. Gestión del Web Gateway.

Si tienes detalles técnicos adicionales o cambios realizados en la configuración, compártelos para una mejor investigación.

Estoy segura que es problema de CORS, pero tengo definido el origen permitido en la aplicación web del servicio Rest, igual que con el otro stack de Docker, es lo que no entiendo...

Esto es lo que veo en el webgateway, con los logs puestos en EV9:

>>> local-time="Mon Jun 9 10:31:43 2025" wg-build="RT 2501.1849 (linux/apapi:srv=2.4.58/apr=1.7.2/apu=1.6.3/mpm=worker)" wg-log-level=9 when="2025-06-09 10:31:43.321" level=DEBUG2 event=WebGateway.ProcessRequest pid=29 thread-id=281473464725792 csp-connection-no=2 csp-server="LOCAL" csp-server-pid=1386 csp-request-id=4 csp-session-id=G9je2ZjMCj csp-remote-addr=192.168.65.1 csp-page="OPTIONS /hyperobjects/fhir/r4/metadata"
HTTP Request
OPTIONS /hyperobjects/fhir/r4/metadata?_format=json HTTP/1.1
Host: yyyyy.cysnet.net:8743
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: */*
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization
Origin: https://xxxxx.cysnet.net
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
Sec-Fetch-Dest: empty
Referer: https://xxxxx.cysnet.net/
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: es,en-US;q=0.9,en;q=0.8


>>> local-time="Mon Jun 9 10:31:43 2025" wg-build="RT 2501.1849 (linux/apapi:srv=2.4.58/apr=1.7.2/apu=1.6.3/mpm=worker)" wg-log-level=1 when="2025-06-09 10:31:43.326" level=WARNING event=WebGateway.Interrupt pid=29 thread-id=281473464725792 csp-connection-no=2 csp-server="LOCAL" csp-server-pid=1386 csp-request-id=4
Interrupt InterSystems IRIS Process and Close the Connection
Protocol Error between the Web Gateway and InterSystems IRIS (request_id=4; response_id=0).

Así es como tengo configurada la aplicación del servicio rest:

Y así el CSP.conf:

# CSP config file

CSPModulePath "${ISC_PACKAGE_INSTALLDIR}/bin/"
CSPConfigPath "${ISC_PACKAGE_INSTALLDIR}/bin/"

# Serve everything via Web Gateway. Conveniently,
# we needn't worry about sharing this container with non-IRIS applications.
<Location />
    CSP On
</Location>

<Directory />
    Options MultiViews FollowSymLinks
    AllowOverride None
    Require all granted
    <FilesMatch "\.(log|ini|pid|exe|so)$">
        Require all denied
    </FilesMatch>
</Directory>

# SSL SECTION #
# Enable SSL/TLS (https://) on the Apache web server.
# The user is responsible for providing valid SSL certificates.
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile "/webgateway-shared/certificates/xxxxx.crt"
    SSLCertificateKeyFile "/webgateway-shared/certificates/xxxxx.key"
    # Header add ACCESS-CONTROL-ALLOW-ORIGIN "*"
</VirtualHost>

# Redirect Help links
Redirect /csp/docbook/ http://docs.intersystems.com/irislatest/csp/docbook/

Las llamadas son https:

Creo que tengo algo mal configurado, pero no sé exactamente dónde... El error dice que es un error de protocolo entre el webgateway y la instancia de IRIS. Lo que no entiendo es por qué no me sale ese error cuando accedo al portal de IRIS a través del gateway, o cuando llamo al repositorio FHIR a través de Postman (y también del webgateway)... Puede ser que tenga algo mal configurado en el repositorio FHIR? O en el webgateway?

Esta es la config del webgateway:

Esta la configuración del superservidor:

Y el repositorio FHIR tiene todo por defecto, excepto el Service Config Name:

Nada, sigue igual.

He hecho otra prueba: he creado un servicio Rest que solamente devuelve un hola mundo, le he añadido los orígenes y tal como en el otro servicio, y éste sí funciona:

A este servicio le he añadido el parámetro del cors:

Parameter HandleCorsRequest As %Integer = 1;

Así que he revisado la clase del servicio de FHIR (HS.FHIRServer.RestHandler), a ver si tiene esto, y lo tiene también. Es más, he comparado incluso el código de la versión 2025.1 con la versión 2024.3, a ver si es que en algún sitio hay algo distinto, pero son iguales.

No entiendo qué pasa 😢

He encontrado este artículo: https://community.intersystems.com/post/no-access-control-allow-origin-h...

Es lo que me pasa a mi desde mi aplicación web (quitando el error del webgateway, que me da que simplemente la descripción no es correcta).

Revisando el usuario CSPSystem, le he asignado el rol de la base de datos donde está el repositorio FHIR, y sigue sin funcionar, pero si le asigno el rol %All, funciona. Así que algún permiso me falta con este usuario, no consigo averiguar cuál...