阻止原始https://xxxx
的框架访问来源https://xxx
的框架。协议,域和端口必须匹配。
我需要此设置才能工作,并且我可以访问这两个域(2个不同的域)。
我怎样摆脱这个?
我尝试将php-header
放在iframe
所在的页面上:
header("Access-Control-Allow-Origin: https://domain_the_iframe_is_placed");
还有htaccess:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
我该怎么办?
这是iframe页面,位于另一个域(y.com)上,但放在x.com上
parent.document.getElementById('accoxxation').value='<?=$_POST['account_verification']?>';
parent.document.getElementById('accxx').value='<?=$_POST['account_number']?>';
parent.document.getElementById('accxxonth').value='<?=$_POST['account_month']?>';
parent.document.getElementById('accxxxr').value='<?=$_POST['account_year']?>';
parent.document.getElementById('gatewayProcessor').submit();
答案 0 :(得分:1)
allow-origin将允许服务器请求称为CORS,而不是帧间连接。尝试与窗口消息进行通信,这是为此目的而设计的 例如:
父:
myFrame.contentWindow
.postMessage("STRING", myFrame.src);
myFrame:
window.addEventListener("message", function (event) {
// Security: Validate message origin
if (event.origin !== myVerifiedOrigin) {
return;
}
console.log(event.data);
});
答案 1 :(得分:0)
禁止访问其他来源的帧。您可以在浏览器设置的深度更改它。我不认为这是个好主意。这是一个安全问题。如果您可以控制两个源,则可以使用postMessage来传递投掷帧。
答案 2 :(得分:0)
默认情况下,您不能/不应该这样做,但根据本网站
http://javascript.info/cross-window-communication
这是“相同来源”政策中的一小部分。
如果Windows共享相同的第二级域,例如john.site.com,peter.site.com和site.com(因此它们的公共第二级域为site.com),则可以将它们视为来自“同一来源”。
要使其正常运行,所有此类页面(包括来自site.com的页面)都应运行以下代码:
document.domain = 'site.com';
仅此而已。现在,他们可以无限制地进行交互。同样,这仅适用于具有相同二级域的页面。