如何使用CORS访问iframe

时间:2014-03-14 18:35:05

标签: javascript iframe cors

当用户打印时,我的服务器会生成PDF,我这样做是为了显示PDF的打印对话框。

$('<iframe type="application/pdf"></iframe>').attr('src', url).load(function() {
    var iframe = this;
    setTimeout(function() { //Chrome PDF viewer shows "Loading..." forever otherwise
        iframe.contentWindow.print();
        $(iframe).remove(); //gc
    }, 50);
}).appendTo('body');

但现在我在S3上托管PDF。我得到了

Uncaught SecurityError: Blocked a frame with origin "https://localhost" from
accessing a frame with origin "https://my-bucket.s3.amazonaws.com".
Protocols, domains, and ports must match.

我认为我需要添加CORS标题。

我有

Access-Control-Allow-Methods: GET, HEAD
Access-Control-Allow-Origin: *

我错过了什么?

1 个答案:

答案 0 :(得分:26)

Paul - CORS在尝试以编程方式访问来自跨域iframe的内容时不适用。如果您要访问其他域上的iframe内容,则需要使用Web Messaging API(window.postMessageonmessage事件)在您的网页和iframe之间进行通信。