【发布时间】:2015-03-04 01:21:48
【问题描述】:
我正在尝试使用 Web Worker 将一些 CPU 密集型计算卸载到单独的线程中。对于一点上下文,我从getUserMedia 获取音频流并将其保存到文件中,以便在完成后上传到我的服务。我能够从用户那里检索流并通过 WebAudio API 和 HTML5 播放器进行播放,但现在我需要将其保存到文件中。
问题:
我的主要服务是通过 HTTPS 连接运行的,因为它仅限于登录用户。我有一个工作脚本可以完成我需要的工作,并且我正在尝试通过相对路径将脚本加载到我的工作人员中。我收到以下错误
Mixed Content: The page at 'https://someurl.com:1081/some/path' was loaded over HTTPS,
but requested an insecure Worker script
'http://someurl.com/some/path/lib/assets/javascripts/worker.js'.
This request has been blocked; the content must be served over HTTPS.
我认为这是因为我在代码中使用了相对路径,如下所示:
worker = new Worker('lib/assets/javascripts/worker.js');
我想排除这种情况,所以我做了以下更改:
worker = new Worker('https://someurl.com:1081/some/path/lib/assets/javascripts/worker.js');
这并没有解决我的错误。无论我尝试使用什么 url 位置,Worker 似乎都在通过 HTTP 加载我的脚本。我找不到任何关于如何通过 HTTPS 使用 Web Worker 的参考资料,所以我希望有人能提供一些见解。
可能的解决方案
我确实希望您知道有一个可能的解决方案,但对我来说似乎有点hacky。我可以将我的工作脚本加载为Blob 并将其直接传递到Worker。如果这是唯一的解决方案,我可以让它工作。但我希望能找到一种通过 HTTPS 加载脚本的方法。
【问题讨论】:
-
你的主页是
https吗? -
奇数。我会说查看 Chrome 调试器中的网络选项卡,并查看浏览器请求的确切资源和协议,看看是否可以提示您问题出在哪里。
-
在network选项卡中可以看到请求,请求URL是
https那个。它以红色突出显示并表示已取消(我假设是因为错误消息说请求被阻止)。标题中没有其他数据。 -
您能否发布一个指向该页面的链接,以便我们自己查看调试器?此外,您是否完全按照它所说的那样在您的问题中发布了错误消息,因为它显示页面协议/域/端口的
https://someurl.com:1081,但 webWorker 脚本协议/域/端口的http://someurl.com,它们在协议或港口。
标签: javascript multithreading web-worker