2014-02-24 27 views
0

我正在嘗試將HLS流集成到我的Chromecast應用中。對HLS的Chromecast支持,Amazon S3上的CORS錯誤

接收器部分很好,因爲我用多個HLS Stream url進行了檢查。

我只是不能讓CORS位正確操作。

我正在使用Amazon 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

現在我已經使用corsproxy作爲反向代理,將cors頭添加到我的請求。真的推薦這個解決方案。不需要這樣的自定義接收器應用程序。只是你的服務器

運行在某處安裝corsproxy的CORS代理:

$ corsproxy <SERVER_IP> <DESIRED_PORT> 

和運行像請求:

http://<SERVER_IP>:<DESIRED_PORT>/<YOUR REQUEST> 

安裝來自: https://www.npmjs.org/package/corsproxy

1

試試這個https://github.com/TOMODOcom/TOMODOkorz。這個對我有用。

TOMODOkorz允許您對任何域進行跨域請求。將它添加到您的網站後,它會從您的網站中刪除任何跨網站限制。允許輕鬆跨源資源共享

0

根據http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html,您的示例看起來比需要的更復雜一點。

<CORSConfiguration> 
<CORSRule> 
    <AllowedOrigin>*</AllowedOrigin> 
    <AllowedMethod>GET</AllowedMethod> 
</CORSRule> 
</CORSConfiguration> 

可能是所有你需要的。那就是說,你是否擁有這個桶interactive-encoding-out?這可能是問題。您可能需要將這些段複製到您自己的存儲桶中,然後纔可以設置此標題。