2011-07-27 22 views
5

我们有一个Ruby on Rail应用程序,允许用户将一些视频嵌入代码保存到我们的数据模型中。该表格允许用户输入任意数量的嵌入代码,按提交并将所有内容保存到数据库中。该应用程序然后将用户重定向到具有所有嵌入代码列表的页面。嵌入式视频在嵌入代码保存到Rails模型后首次加载时不在Chrome中呈现嵌入式视频

此工作流适用于IE,Safari和Firefox。

但是,在Chrome上,首次加载页面时,页面上不会显示任何视频。我在控制台中看到以下错误,每个视频一次:

拒绝执行JavaScript脚本。在请求中找到脚本的源代码。

在后续页面加载时,视频加载正常,并且不显示该错误。

当我查看源代码时,页面被重新加载为view-source操作,所以我不知道源是否按预期方式通过。

当我块,其中的视频应该是检查元素,我看到以下内容:

<iframe src="" width="400" height="225" frameborder="0"> 
    <html> 
    <head></head> 
    <body></body> 
    </html> 
</iframe> 

这种情况出现在iframe的风格嵌入代码,以及对“旧式”的标签代码YoutTube和Vimeo视频。

相关:

回答

6

这是Chrome浏览器如何防止XSS (cross-site scripting),作为您的参考以上。

当您提交嵌入代码并重定向到另一个页面以显示它们时,Chrome会发现提交的嵌入代码(通过HTTP POST))和响应的嵌入代码是相同的,因此它可以防止加载它们并显示控制台中出现错误。

当你刷新页面时,没有更多的HTTP POST提交(因为你之前重定向过),所以它应该正确显示。

我有同样的问题,我通过在重定向后自动重新加载页面来解决它。

+0

实际上,有可能在浏览器的错误。不知道错误的状态是什么。 –

+1

Chrome问题状态:http://代码。google.com/p/chromium/issues/detail?id=98787 –

+1

错误状态报告的解决方案:将“X-XSS-Protection:0”添加到响应标题。 – nickvane

1

我通过JavaScript(与jquery)作为workarround重新加载不同iframe ..

我因此存储在src别处原因铬删除它..

我加入URL作为src和SRC2,并且重新加载两次然后用src2。

我还给了所有需要重新加载特殊类'webkitIframeHack'的iframe。

<script type="text/javascript"> 
$(function(){ 
    if ($.browser.webkit) { 
     $("iframe.webkitIframeHack").each(function(){ 
      $(this).attr('src', $(this).attr('src2')); 
     }); 
    }; 
}); 
</script> 

(我不能使用HTML5数据 - *属性,我认为他们会更配合..)