提供跨源HTML5视频需要绕过OPTIONS预检

时间:2013-11-17 00:06:19

标签: html5 apache google-chrome video cors

我正在尝试将流视频提供给嵌入在源代码中的我无法控制的外部html5视频标记。 (3D虚拟世界,cloudparty)。

为了让视频资产完全可用,视频资产服务器必须支持CORS,并且我已经成功地为非流媒体资产做了这项工作。 http流视频出现问题。编码器(VLC)对CORS一无所知,因此我必须代理它生成的http流。使用mod_proxy,我能够呈现所需的标头。我已将此添加到我的虚拟主机apache中:

<IfModule mod_proxy.c>
# Mod_proxy Module
    ProxyReceiveBufferSize 16384

    ProxyRequests Off
    ProxyVia On
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    <LocationMatch "/vlcstreams">
        # VLC server stream
        ProxyPass http://localhost:8081
        #ProxyPassReverse http://localhost:8081

        Header set Access-Control-Allow-Origin  "https://www.cloudparty.com"
        Header set Access-Control-Allow-Methods "GET"
        Header set Access-Control-Allow-Headers "Range, Accept-Encoding"
        Header set Accept-Ranges bytes
        #Header set Content-Length "-1"
    </LocationMatch>
</IfModule>

现在,如果我使用Firefox,一切都很好。流在3D虚拟世界中播放得很好。但是,在使用Chrome时,它会坚持向我的服务器发送OPTIONS预检请求。我的服务器响应501 - 未实现。我不确定它是否将选项请求传递给VLC http服务器,或者它正在做什么。无论如何,无论如何,我都需要回复200。我已经尝试了一些重写来响应所有选项请求,但我最终完全关闭了该虚拟主机。

如果我以“不安全”模式启动Chrome,它也可以正常播放......所以这表明它绝对是一个跨域安全问题。

在代理像这样的流时,apache是​​否有办法响应这些OPTIONS预检请求?

0 个答案:

没有答案