【问题标题】:Error trying to access a iframe in JavaScript尝试在 JavaScript 中访问 iframe 时出错
【发布时间】:2012-11-06 22:05:48
【问题描述】:

我正在尝试从这个小 API 调用 SC.Widget 函数:http://developers.soundcloud.com/docs/api/html5-widget,但我在 Chrome 检查器中收到此错误消息并且我卡在那里。

不安全的 JavaScript 尝试使用 URL 访问框架 file://localhost/Users/maxwell/Desktop/test/test.html 来自带有 URL 的框架

http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F67825032&auto_play=false&show_artwork=true&color=ff7700.

请求访问的帧具有“http”协议,该帧是 访问具有“文件”协议。协议必须匹配。

<body>
    <iframe id="soundcloud" width="100%" height="166" scrolling="no" frameborder="no"
    src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F67825032&amp;auto_play=false&amp;show_artwork=true&amp;color=ff7700"></iframe>
    <script>
        Soundcloud();
    </script>
</body>


function Soundcloud() {
    var widget1 = SC.Widget(iframeElement.soundcloud);
    alert("widget1");
}

我知道这样做是出于安全原因,但如果我无法访问框架,我该如何修改 SoundCloud 小部件?

感谢您的帮助!

【问题讨论】:

    标签: javascript soundcloud


    【解决方案1】:

    您可以将其添加到您的 iframe 中

    sandbox="allow-same-origin allow-scripts"
    

    但在歌剧中不受支持 - w3schools 的新项目。它会处理错误,但会破坏播放器。

    【讨论】:

      【解决方案2】:

      当使用 JavaScript 访问 iframe 或发出任何 JSON AJAX 请求时,您只能在它们位于同一域中时获得访问或响应。否则,服务器必须显式设置:

      访问控制允许来源:*

      在标题中。您还可以提供以逗号分隔的允许域列表,而不是 *。

      所以你必须在网页和数据源在同一个域上的开发环境中进行测试,比如本地主机,否则你真的无能为力,除非你用--disable启动chrome -网络安全

      【讨论】:

      • @Maxwell SoundCloud 需要设置该标头。不是你。
      猜你喜欢
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2022-08-07
      • 2011-01-17
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 2015-04-10
      相关资源
      最近更新 更多