3

我希望为 Android+Chrome 上的用户提升我的网络应用程序以添加到主屏幕。(灵感来自:Chromium 博客条目

为此,我需要一个运行的Service Worker,甚至是一个虚拟的。(Chrome 需要 Service Worker 来证明我对 Web 应用程序是认真的)

所以我创建了一个没有内容的虚拟 Service Worker。它使用正确的无缓存标头提供服务,通过 HTTPS 提供服务,并作用于整个域。

事情通常可以正常工作,但是每次我尝试动态创建音频元素时:

jQuery( '<audio><source src="/beep.mp3" type="audio/mpeg"></source></audio>' );

...我的控制台显示出一些不愉快(取自 Chrome Canary,以便从服务工作线程更好地传递消息,但基本上相同的输出在 Chrome current 中):

Mixed Content: The page at 'https://my.domain.com/some/page' was loaded over HTTPS, but requested an insecure video ''. This content should also be served over HTTPS.

GET https://my.domain.com/beep.mp3 400 (Service Worker Fallback Required)

我想重要的是要注意,很明显,我不是直接检索资源,只是创建元素并让浏览器检索 MP3。

MP3 确实被提取了(我能够在音频元素上运行 .play() 方法)。只是控制台日志中的错误堆积如山,让我怀疑这种方法的可靠性。此外,顺便说一句,在 Canary(但不是当前)中,失败会将我的“HTTPS 锁定”指示器从绿色更改为“警告”(因此,未来的问题)。

音频源与页面来自同一个域,并且都是 HTTPS。所以来自服务工作线程的“混合内容”消息很奇怪;它引用了一个以 '' 作为 url 的视频。

问题:我做错了什么还是 Chrome 错误?我需要的不仅仅是一个虚拟(空)服务人员吗?如果我做错了什么,我想找到一个最佳实践/长期类型的解决方案,而不是一起破解一些东西,但我会尽我所能。;)

4

1 回答 1

0

it seems to be a bug. This is the issue on Google code:

https://code.google.com/p/chromium/issues/detail?id=477685

于 2015-04-22T22:39:37.883 回答