Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

243
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda