Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

306
Vistas
JS no puede recibir datos JSON del corredor orion-ld, se produjo un problema relacionado con CORS

Uso el intermediario de contexto orion-ld

 { "orionld version": "post-v1.0.0", "orion version": "1.15.0-next", "uptime": "0 d, 0 h, 25 m, 17 s", "git_hash": "nogitversion", "compile_time": "Wed Jan 26 15:58:47 UTC 2022", "compiled_by": "root", "compiled_in": "", "release_date": "Wed Jan 26 15:58:47 UTC 2022", "doc": "https://fiware-orion.readthedocs.org/en/master/" }

Si trato de solicitar datos JSON en un archivo HTML a través de JS como

 var myRequest = new XMLHttpRequest(); myRequest.open("GET", "http://192.168.0.18:1028/ngsi-ld/v1/entities/urn:ngsi-ld:OffStreetParking:XXX_102700") ; myRequest.setRequestHeader("Accept", "application/ld+json") myRequest.onload = function () { console.log(myRequest.responseText); }; myRequest.send();

Recibí un error: "Acceso a XMLHttpRequest en 'http://192.168.0.18:1028/ngsi-ld/v1/entities/urn:ngsi-ld:OffStreetParking:XXX_102700' desde el origen 'http://192.168.0.18' ha sido bloqueado por la política de CORS: no hay ningún encabezado 'Access-Control-Allow-Origin' en el recurso solicitado".

Si inicio sesión en la consola del contenedor acoplable y compruebo la variable ORIONLD_CORS_ALLOWED_ORIGIN, contiene el valor necesario "__ALL".

¿Qué podría estar mal aquí?

Actualización al 01/03/2022: ahora creo una página web simple basada en funciones JS de NGSI.js , como sugirió Jason Fox ayer. Allí puede probar las llamadas relacionadas con "v2" a orion-ld y las llamadas relacionadas con "ld". En la consola del navegador, puede ver los resultados registrados. También puede cambiar la URL de orion-ld en el sitio web para poder probar su entorno. Sin embargo, la configuración de CORS para el servidor orion-ld no funcionó como se esperaba. Las llamadas 'v2' funcionan bien, las llamadas 'ld' fallaron. Creo mi entorno de prueba orion-ld con el siguiente docker-compose.yml :

 version: "3.5" services: orion-ld: image: fiware/orion-ld hostname: orion-ld ports: - "1029:1026" depends_on: - mongo-db environment: ORIONLD_CORS_ALLOWED_ORIGIN: __ALL corsOrigin: __ALL ORIONLD_CORS_MAX_AGE: 86400 command: -dbhost mongo-db-vm -logLevel DEBUG mongo-db: image: mongo:3.6 hostname: mongo-db-vm volumes: - /SOMEWHERE/data:/data

Pruebe mi entorno y el suyo en una página web simple y envíe sus comentarios.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Arquitecto y desarrollador de Orion-LD aquí. Todo lo que Orion-LD tiene sobre CORS es lo que se heredó de Orion. Esta es la primera vez que alguien solicita CORS para Orion-LD, así que intentaré solucionarlo lo antes posible.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Supongo que se trata de una configuración de desarrollo local. Por lo tanto, probablemente llame a su interfaz en "localhost" o "127.0.0.1", lo que lleva al problema CORS cuando llama a orion en "192.168.0.18". Básicamente tienes 2 opciones para que funcione:

  1. deshabilite CORS en su navegador al desarrollar. La solución concreta depende de su navegador.
  2. Coloque Orion-LD en localhost, llamándolo así con el mismo origen que su interfaz. El fragmento de código docker-compose que publicó ya coloca a orion en "localhost:1029"/"127.0.0.1:1029" (consulte la sección de puertos). Por lo tanto, debe configurar el punto final de orion en su interfaz en "localhost: 1029"/"127.0.0.1:1029" (dependiendo de la dirección que use al llamar a orion) en lugar de la IP del contenedor actual (por ejemplo, "192.168.0.18: 1028")

No creo que valga la pena implementar el soporte de CORS directamente en Orion-LD, ya que este no es un escenario de implementación real. En escenarios del mundo real, tendría uno de los siguientes:

  1. Un escenario muy pequeño, que ni siquiera utiliza ningún tipo de marco de seguridad y solo una instancia de intermediario. En tales entornos, es muy inusual que la interfaz se ejecute en un origen diferente.
  2. Un marco de seguridad entre orion y el frontend. En este caso, las solicitudes de la interfaz nunca llegarán directamente al corredor, sino a la capa de seguridad. Por lo tanto, el componente de seguridad debe proporcionar el encabezado CORS.
  3. Un escenario con cualquier tipo de infraestructura adicional (probablemente un equilibrador de carga o un controlador de entrada lb+an en entornos k8s). Similar al escenario 2, esto conduciría a que ninguna solicitud llegue directamente al corredor y el componente entre la interfaz y el corredor necesita manejar CORS.
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda