2013-03-05 45 views
2

我已經託管了由Adobe captivate在Amazon S3生成的html5視頻。當我使用瀏覽器訪問它的工作正常。無法訪問來自交叉桶的內容(CORS ENABLED)

工作URL:http://lmtestforhtmlfive.s3.amazonaws.com/html5version/test/Hello%20World/story_html5.html

但是,當我用IFRAME上述工作的視頻,在另一個HTML頁面,它不工作。

錯誤: 「不安全的JavaScript嘗試訪問來自幀的網址爲http://temptesttobedelete.s3.amazonaws.com/html5test.html的幀,網址爲http://lmtestforhtmlfive.s3.amazonaws.com/html5version/test/Hello%20World/story_html5.html。域,協議和端口必須匹配。

不工作的網址:http://temptesttobedelete.s3.amazonaws.com/html5test.html

經過幾年的研究,我有需要在S3桶啓用CORS,添加以下CORS配置上lmtestforhtmlfive桶。

<CORSRule> 
<AllowedOrigin>*</AllowedOrigin> 
<AllowedMethod>GET</AllowedMethod> 
<AllowedHeader>*</AllowedHeader> 
<MaxAgeSeconds>3000</MaxAgeSeconds> 
</CORSRule> 

但我仍然無法訪問iframe中的html5視頻。

請建議我如何訪問IFRAME中的html5視頻。

感謝, Laxmilal Menaria

回答

1

你的問題是你storyline_compiled.js文件中的代碼是attemping儘管從不同的域加載來訪問它在加載的IFRAME的父頁面的DOM,具體有以下行:

if(self!=top){var meta=$('<meta name="viewport" id="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>');top.document.getElementsByTagName("head")[0].appendChild(meta.get(0))} 

更具體地,有問題的JS調用是:

top.document.getElementsByTagName 

這個問題是由於從另一個域加載的JS試圖修改其嵌入的頁面,這違反了大多數瀏覽器的XSS保護特性。

您擁有的一個選擇是從JS文件本身刪除該行代碼,然後將其試圖創建的標記添加到嵌入IFRAME的頁面的頭部。即只需將以下內容添加到您的html5test.html文件中:

<meta name="viewport" id="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>