【问题标题】:How do I load a Web Worker script over HTTPS?如何通过 HTTPS 加载 Web Worker 脚本?
【发布时间】: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


【解决方案1】:

你试过了吗

//someurl.com:1081/some/path/lib/assets/javascripts/worker.js 

而不是

https://someurl.com:1081/some/path/lib/assets/javascripts/worker.js

只是我在这里找到的东西, Deezer content is served over HTTP

【讨论】:

  • 感谢您的建议,但不幸的是,这给出了同样的错误。它确实帮助我追踪了实际发生的事情:)
  • 太棒了!很高兴你知道了。
【解决方案2】:

我解决了这个问题。该错误本身具有误导性,导致我陷入困境寻找解决方案。

这里的问题实际上源于我配置此服务的方式。启动 Web Worker 的服务实际上是在另一个服务之后代理的,所有请求都经过父服务。这对大多数请求都很有效,但在这种情况下会导致错误。网络工作者没有将此端口上的请求转发到我的应用程序,而是尝试从父服务本身下载工作者脚本。这意味着错误源于未找到脚本这一事实,而不是协议不正确。

为了解决这个问题,我必须使用 Rails 的资产管道从 Rails 传入一个本地化的脚本位置。这让工作人员可以抓取脚本并实际工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多