5

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

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

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 小部件?

谢谢你的帮忙!

4

2 回答 2

8

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

访问控制允许来源:*

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

因此,您必须在网页和数据源位于同一域(例如 localhost)的开发环境中对此进行测试,否则您实际上无能为力,除非您使用 --disable-web- 启动 chrome安全

于 2012-11-19T01:54:46.517 回答
2

您可以将此添加到您的 iframe

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

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

于 2013-02-28T09:57:33.270 回答