2012-11-19 52 views
5

Tôi đang cố gắng gọi hàm SC.Widget từ API nhỏ này: http://developers.soundcloud.com/docs/api/html5-widget, nhưng tôi nhận được thông báo lỗi này trong thanh tra Chrome và tôi bị kẹt ở đó.Lỗi khi cố gắng truy cập iframe trong JavaScript

không an toàn JavaScript cố gắng truy cập vào khung với URL file://localhost/Users/maxwell/Desktop/test/test.html từ khung withURL

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

Khung yêu cầu quyền truy cập có giao thức 'http', khung được truy cập có giao thức 'tệp'. Các giao thức phải khớp nhau.

<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"); 
} 

Tôi biết nó đang làm này vì lý do an ninh, nhưng làm thế nào để tôi sửa đổi widget SoundCloud nếu tôi không thể truy cập vào khung?

Cảm ơn bạn đã trợ giúp!

Trả lời

8

Khi truy cập iframe có JavaScript hoặc thực hiện bất kỳ yêu cầu AJAX JSON nào, bạn chỉ có thể nhận quyền truy cập hoặc phản hồi khi họ ở trên cùng một miền. Nếu không, máy chủ phải đặt rõ ràng:

Access-Control-Allow-Origin: *

trong tiêu đề. Bạn cũng có thể cung cấp danh sách các miền được phép được phân cách bằng dấu phẩy thay vì *. Vì vậy, bạn phải kiểm tra điều này trong môi trường phát triển nơi trang web và nguồn dữ liệu nằm trên cùng một tên miền, chẳng hạn như localhost, nếu không, bạn không thể làm gì khác trừ khi bạn khởi động chrome bằng - vô hiệu hóa-web-an ninh

+0

@Maxwell SoundCloud sẽ cần đặt tiêu đề đó. Không phải bạn. – monokrome

2

bạn có thể thêm video này vào iframe bạn

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

không được hỗ trợ trong opera mặc dù - item mới từ w3schools. Nó sẽ chăm sóc lỗi, nhưng nó sẽ phá vỡ các cầu thủ.

Các vấn đề liên quan