Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

301
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!