miles
1
我需要帮助排查为什么嵌入的 WebM 在某些系统上可以正常工作,而在其他系统上却不行。
这个嵌入的 WebM 片段能否直接播放,而无需在新页面中打开链接?请问您使用的是哪个操作系统和浏览器?
我嵌入的方式只是将原始 URL 直接粘贴到消息正文中:
s1.webmshare.com/jvY0A.webm
可点击链接:s1.webmshare.com/jvY0A.webm
以下是我的观察结果:
| 操作系统 |
浏览器 |
结果 |
| Ubuntu 20.04 |
Firefox 76 |
失败 |
| Ubuntu 20.04 |
Chrome 81 |
失败 |
| OSX 10.13.6 |
Chrome 81 |
失败 |
| Android 7 |
DuckDuckGo |
正常 |
我认为这在 Ubuntu 19.10 上曾经可以正常工作,但我不打算降级系统来再次验证。
以下是我在 Firefox 中看到的情况:
miles
3
那个嵌入的 WebM 视频片段在你那边能正常播放吗?
我又检查了一遍,在 Ubuntu 20.04 系统的 Firefox 86 和 Chrome 88 中,我仍然收到“未找到支持的视频格式和 MIME 类型”的错误。根据 CanIUse 网站的显示,这应该是可以正常工作的。
miles
4
另外有趣的是,在打开 Chrome 开发者控制台的情况下,原始版本在刷新后可以正常工作:
Chrome 首次加载:
混合内容:页面 ‘How to embed WebM’ 通过 HTTPS 加载,但请求了一个不安全元素 ‘http://s1.webmshare.com/jvY0A.webm’。该请求已自动升级为 HTTPS。有关更多信息,请参阅 Chromium Blog: No More Mixed Messages About HTTPS
资源加载失败:服务器响应状态为 404 () s1.webmshare.com/jvY0A.webm:1
Chrome 刷新(令人惊讶的是现在可以工作了——我猜打开开发者工具时安全设置有所放宽):
混合内容:页面 ‘How to embed WebM’ 通过 HTTPS 加载,但请求了一个不安全元素 ‘http://s1.webmshare.com/jvY0A.webm’。该请求已自动升级为 HTTPS。有关更多信息,请参阅 Chromium Blog: No More Mixed Messages About HTTPS
Firefox 中的错误略有不同,并且在打开开发者控制台刷新后仍然无法加载。这种一致的行为似乎更合理:
在安全页面上加载混合(不安全)显示内容"http://s1.webmshare.com/jvY0A.webm"
加载’http://s1.webmshare.com/jvY0A.webm’失败。一个 ServiceWorker 向 FetchEvent.respondWith() 传递了一个 Promise,该 Promise 被拒绝,错误为’Error: no-response :: [{“url”:“http://s1.webmshare.com/jvY0A.webm”}]'。
所有候选资源均加载失败。媒体加载已暂停。
这看起来是 http 与 https 的问题。使用原始链接(无前缀)时,似乎默认使用 http://。这是另一个明确包含安全 https:// 前缀的版本,但同样无法工作。
https://s1.webmshare.com/jvY0A.webm
问题似乎出在 webmshare 主机上,其 https 连接实际上并不安全。
有点烦人的是,Chrome、Firefox 和 DDG 对此问题的处理方式各不相同。
miles
6
事实证明,最简便的方法是直接将 .webm 文件拖放到论坛中,而不是依赖外部托管。
拖放操作(直接上传到 Discourse 实例)会生成:

目前运行正常。