Javascript 如何使用CORS访问iframe

Javascript 如何使用CORS访问iframe,javascript,iframe,cors,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 if

当用户打印时,我的服务器生成一个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');
我想我需要添加标题

我有

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

我遗漏了什么?

Paul-CORS在试图以编程方式从跨源iframe访问内容时不适用。如果您想从不同域上的iframe访问内容,您需要使用Web消息API(
window.postMessage
&
onmessage
事件)在您的页面和iframe之间进行通信。

这没问题……只是我的问题似乎没有解决方案。在iframe中,我有一个PDF。我想把它打印出来。我不能准确地在PDF中使用
window.postMessage
。@PaulDraper只需将PDF附加到iframe中的
,并将您的消息传递代码包含在iframe中即可。@Ray,您能用代码解释一下吗?我在这里有点迷路了。谢谢我想知道为什么CORS不适用于跨源iFrame。如果iframe的内容明确允许从另一个来源访问,为什么iframe被排除在外?用户与iframe内容的交互不是问题。通过设置CORS标头,iframe内的页面提供对包括iframe在内的页面的完全访问。我想,这可能会导致安全问题,因为访问页面可能会被破坏,从而操纵iframe页面的内容。这就是为什么存在
window.postMessage()
,在两者之间提供有限的交互。但也许这就是你的意思。:-)你解决了吗?你解决了吗?如果是的话,你能发布你的答案吗?可能是
Access-Control-Allow-Methods: GET, HEAD
Access-Control-Allow-Origin: *