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

247
Vistas
Solución para los límites de tamaño de GET XMLHttpRequest (solicitud local)

Problema

Mientras desarrollaba una extensión de Chrome, encontré un problema en el que intento recuperar un archivo JSON grande (~ 1 GB) mediante la solicitud XMLHttpRequest GET. El archivo está ubicado en mi máquina local y recupero el enlace de descarga usando chrome.runtime.getURL('data.json') desde un script de contenido.

el error que me sale es

 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at xhr.onreadystatechange (<anonymous>:11:23) at XMLHttpRequest.<anonymous>

Supuse que se debe a que el archivo JSON es demasiado grande y, por lo tanto, no es posible descargarlo de una sola vez (corríjanme si este no fuera el caso). ¿Hay alguna solución para esta limitación de tamaño?

información adicional

Genero el archivo JSON a partir de un script de python, por lo tanto, es completamente posible elegir un formato diferente (tal vez algún formato binario) si es necesario.

Además, no puedo usar ninguna API proporcionada para las extensiones de Chrome, ya que la secuencia de comandos desde la que estoy llamando a XMLHttpRequest no es una secuencia de comandos de contenido, sino una secuencia de comandos adjunta al cuerpo del sitio web.

Aquí hay un código mínimo para la reproducción (no olvide configurar content_security_policy en el manifiesto para habilitar la ejecución del script en línea).

 // Content script function init() { let script = document.createElement("script"); script.appendChild(document.createTextNode(__magic.toString() + "; __magic('" + chrome.runtime.getURL('data.json') + "');")); script.id = "__magic"; document.body.appendChild(script); } function __magic(url) { var db; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = () => { if (xhr.readyState === 4) { db = JSON.parse(xhr.response); window.setInterval(check, 10); } }; xhr.open("GET", url, true); xhr.send(); } init();

Editar


Olvidé decir que tuve éxito al cargar el archivo JSON grande en python, por lo tanto, creo que es seguro asumir que el archivo JSON no está dañado.

Además, el archivo JSON almacena una estructura gráfica: elijo el siguiente diseño para el archivo json

 { "node1": { "children": ["node2", "node3"], "foo": 15 }, "node2": { "children": ["node15", "node1"], "foo": 90 }, ... }

Apuesto a que hay una forma más eficiente de almacenar una estructura gráfica en lugar de usar JSON, sin embargo, hasta ahora no pude encontrar ninguna que fuera compatible con javascript.

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

0

  1. guarde la respuesta en un archivo nuevo y compare el tamaño con el archivo original.
  2. intente con xhr.responseType = "json" y no analice la respuesta (si puede)
  3. intente dividir el archivo local en partes más pequeñas y realice varias solicitudes asincrónicas xmlhttprequest\fetch (Promise.all) y luego una las respuestas en su gran archivo json final.
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