Tengo este experimento que solo ejecuto en mi máquina local: cargo una página web externa desde, por ejemplo, https://example.com y con titiritero inyecto un archivo javascript que se sirve desde http://localhost:5000 .
Hasta ahora no hay problemas. Pero, este archivo javascript inyectado carga un archivo WebAssembly y luego aparece el siguiente error
Uncaught (in promise) ReferenceError: SharedArrayBuffer is not defined ....Y, de hecho, SharedArrayBuffer no está definido (Chrome v96) con el resultado de que mi código no funciona en absoluto (aunque solía funcionar). Entonces mi pregunta es, ¿cómo puedo solucionar este error?
Al leer más sobre esto, parece que puede agregar dos encabezados
res.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp');lo cual hice para ambos archivos sin mucho éxito. Tal vez esto no funcione dado que la página es de un dominio diferente al de los archivos js y WASM inyectados.
Pero tal vez hay otra solución posible. Aquí está mi comando para iniciar Chrome
client.browser = await puppeteer.launch({ headless: false, devtools: true, defaultViewport: null, executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', args: [ '--debug-devtools', '--no-sandbox', '--disable-setuid-sandbox', '--disable-web-security', '--allow-running-insecure-content', '--disable-notifications', '--window-size=1920,1080' ] //slowMo: 500 });Sé que Chrome tiene demasiadas opciones, así que tal vez también haya una opción para este problema de SharedArrayBuffer.
Espero que alguien sepa cómo funciona esto y pueda ayudarme, ¡muchas gracias!
Peter Beverloo hizo una extensa lista de interruptores de línea de comandos de Chromium en su blog hace un tiempo.
Hay muchas líneas de comando que se pueden usar con el navegador Google Chrome. Algunos cambian el comportamiento de las funciones, otros son para depurar o experimentar. Esta página enumera los interruptores disponibles, incluidas sus condiciones y descripciones. La última actualización automática ocurrió el 2020-08-12.
Si está buscando un comando específico, estará allí, pruébelo. Aunque estoy bastante seguro de que se implementaron restricciones de origen cruzado específicamente para evitar lo que estás tratando de hacer.