从跨域加载 vtt 时出现问题



我在从跨域加载 vtt 时遇到问题:"加载 URL 域的不安全尝试......协议和端口必须匹配。 我试图在视频中添加crossorigin="true",它在chrome和firefox中工作,但在Internet Explorer 11中不起作用。 有没有其他方法可以从IE11中的跨域获取vtt文件?

<video controls autoplay crossorigin="true">
<source src="http://ronallo.com/demos/webvtt-cue-settings/soybean-talk-clip.mp4" type="video/mp4">
<track label="Captions" kind="captions" srclang="en" src="http://ronallo.com/demos/webvtt-cue-settings/soybean-talk-clip.vtt" id="caption-change-track" default="">
</video>

video上的crossorigin属性需要anonymoususe-credentials

<video controls autoplay crossorigin="use-credentials">
<source src="http://ronallo.com/demos/webvtt-cue-settings/soybean-talk-clip.mp4" type="video/mp4">
<track label="Captions" kind="captions" srclang="en" src="http://ronallo.com/demos/webvtt-cue-settings/soybean-talk-clip.vtt" id="caption-change-track" default="">
</video>

Mozilla的解释

跨源

此枚举属性指示是否使用 CORS 提取相关映像。启用 CORS 的资源可以在元素中重用而不会受到污染。允许的值为:

匿名

发送没有凭据的跨源请求。换句话说,它发送没有 cookie、X.509 证书或执行 HTTP 基本身份验证的 Origin: HTTP 标头。如果服务器未向源站点提供凭据(通过不设置访问控制允许源:HTTP 标头),则图像将被污染,并且其使用受到限制。

使用凭据

发送带有凭据的跨源请求。换句话说,它发送带有 cookie、证书或执行 HTTP 基本身份验证的 Origin: HTTP 标头。如果服务器未向源站点提供凭据(通过访问控制允许凭据:HTTP 标头),则图像将被污染并限制其使用。

当不存在时,在没有 CORS 请求的情况下获取资源(即不发送 Origin: HTTP 标头),防止其在元素中使用。如果无效,则将其处理为使用枚举的关键字匿名。有关其他信息,请参阅 CORS 设置属性。

您需要在请求 vtt 文件时在响应中包含以下标头,从而在原始服务器上设置跨域策略:

Access-Control-Allow-Origin: *

如果需要,您还可以将允许的域限制为特定条目。

从客户端,您无法强制覆盖,尽管正确设置了crossorigin属性(请参阅 https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) - 在这种情况下,anonymous确实有助于浏览器正确协商请求

相关内容

  • 没有找到相关文章

最新更新