当用户打印时,我的服务器会生成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: *
我错过了什么?
答案 0 :(得分:26)
Paul - CORS在尝试以编程方式访问来自跨域iframe的内容时不适用。如果您要访问其他域上的iframe内容,则需要使用Web Messaging API(window.postMessage
和onmessage
事件)在您的网页和iframe之间进行通信。