cryptoadvance / specter-desktop

A desktop GUI for Bitcoin Core optimised to work with hardware wallets
MIT License
793 stars 237 forks source link

qr scanner will not start / qr-scanner.min.js not loaded #705

Open esixtyone opened 3 years ago

esixtyone commented 3 years ago

Window 10 + Specter-Setup-v0.10.1.exe

Steps to reproduce: 1, Add New Device -> cobo vault 2, Click Scan QR button Expected: camera to start to scan QR code Actual: nothing happens / camera is not started.

From developer tools console: shows the following error:

qr-scanner.min.js:1 Failed to load module script: The server responded with a non-JavaScript MIME type of "text/plain". Strict MIME type checking is enforced for module scripts per HTML spec.

Also: tested with earlier versions 0.9.2 and it does not work either. This machine did previously have specter-desktop 0.7.2 (I think) installed, but I can not confirm if the qr scanner worked on that version.

Also: opening http://localhost:25441/static/qr/qr-scanner.min.js in browser works, the js file is served.

Also: Installed on another machine (fresh win10 install) and dev tools console shows a different error about not streaming camera when not using https:

Is this expected to work? (on windows 10?)

k9ert commented 3 years ago

Which browser do you used?

esixtyone commented 3 years ago

I ran specter using the downloaded exe, so whatever it uses??? I have Brave, edge, and Chrome installed on that machine. The test I did to load the js file was in chrome.

Can help test or gather more info, if needed.

esixtyone commented 3 years ago

@k9ert
ug ok, I found the problem.

In my registry, the HKEY_CLASSES_ROOT for .js/Content-Type was set to text/plain.

It might be worth explicitly setting the mime types, so as to not rely on specific machine defaults.

as example... https://github.com/pallets/flask/issues/1045#issuecomment-417670216

This was the issue that gave me the hint to as to why the wrong content-type was being served.

k9ert commented 2 years ago

Another reason might be, that not using localhost but http results in an error. If you're in a local area network, it might be okish to use http. In chrome, you can disable the check for ssl by visiting:

chrome://flags/#unsafely-treat-insecure-origin-as-secure