我正在尝试在我的chromecast应用中集成HLS流。
接收器部分很好,因为我使用多个HLS Stream网址进行了检查。
我不能让CORS位正常运行。
我正在使用亚马逊AWS S3。我为我的水桶设置了CORS。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
在我的假设中,这应允许从所有域访问以访问此存储桶内的资源。
但我仍然在Chromecast的javascript中收到以下错误。
XMLHttpRequest cannot load http://s3-eu-west-1.amazonaws.com/interactive-encoding-out/watermark-sintel-test/playlist.m3u8. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://s3-eu-west-1.amazonaws.com' is therefore not allowed access.
答案 0 :(得分:1)
试试这个https://github.com/TOMODOcom/TOMODOkorz。它对我有用。
TOMODOkorz允许您向任何域发出跨源请求。一旦将其添加到您的网站,它将从您的网站中删除任何跨域限制。允许轻松跨域资源共享
答案 1 :(得分:0)
基于http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html,您的示例看起来比nescessary更复杂。
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
可能就是你所需要的一切。那就是说,你拥有桶 interactive-encoding-out 吗?这可能是个问题。您可能需要将段复制到您自己的存储桶中,您可以在此处设置此标头之前。
答案 2 :(得分:0)
现在我使用corsproxy作为反向代理,为我的请求添加了cors标头。真的推荐这个解决方案。这种方式无需自定义接收器应用程序。只需在服务器上的某处安装corsproxy
运行cors proxy:
$ corsproxy <SERVER_IP> <DESIRED_PORT>
并运行请求:
http://<SERVER_IP>:<DESIRED_PORT>/<YOUR REQUEST>