我要检查其起源是否相同?

时间:2019-04-19 06:44:01

标签: javascript jquery html

我的网页(mydomain.com/xyz.php)以相同和不同的来源打开。 当它以相同的原点打开时,我使用xyz.php内部的jquery代码更新了顶部窗口的html。

window.top.$("#idxzy").html(img_block);

在相同的来源中一切正常,但是当我的网页在不同的来源中打开时,此行会产生错误: xyz.php?product_id = XXXX未捕获的DOMException:阻止起源为“ htt p s://www.mydomain.com/”的框架访问跨域框架。

window.top.$("#idxzy").html(img_block);

所以我想在此处添加如下所示的条件,但是我不知道如果使用

if(same_origin){
    window.top.$("#idxzy").html(img_block);
}

如果我将console.log()放在window.top.location上,也是

。 它显示如下 (原产地相同)

enter image description here

(来源不同) enter image description here

2 个答案:

答案 0 :(得分:3)

使用location.hostname

if (location.hostname == "mydomain.com") {
    window.top.$("#idxzy").html(img_block);
}

答案 1 :(得分:1)

您必须使用Window.postMessage()在iframe和父窗口之间进行通信。

Here is the reference

Here you can find more info on that

您也可以尝试catch以防止控制台错误

try {
  if (location.hostname == "mydomain.com") {
     window.top.$("#idxzy").html(img_block);
   }
}
catch(err) {
  // Make sure you catch the exception thrown because is blocked by cross domain reference => then do 
}