不安全的JavaScript尝试使用URL启动框架的导航更改 - 如何尝试捕获它

时间:2012-05-20 06:03:37

标签: javascript security try-catch

我在iframe中有这个脚本:

var redirectTo = "http://www.stackoverflow.com";
try {
      parent.location.href = redirectTo;
}catch(e){
      window.open(redirectTo);
    }

浏览器不会发现主题中的错误 如果try块失败,我希望浏览器执行catch块 但是,即使错误发生在try块内,浏览器仍然会看到错误。

更新 在正常情况下,我的代码工作正常 它在iframe中的iframe时不起作用,在这些情况下我收到了安全错误 你有什么想法吗?我怎么知道我的iframe是否在其他Iframe中?

由于

1 个答案:

答案 0 :(得分:1)

你无法在javascript中捕获这种错误,因为它不是一个javascript错误,它是一个浏览器安全功能。 但您可以通过检查网址和当前位置之间的域名和端口匹配来阻止它。 如果父框架与iframe的域/端口不同,也无法访问父框架。因此,如果父框架域/端口与子iframe不同,则除非您已经从其他来源了解它,否则您甚至无法获取该位置。 你试图做一些你真的不应该做的事情

(更新)检查父节点

var ploc=null
try {
  if (parent && parent.nodeName=="IFRAME")
    ploc=parent.location;//assuming current node is an iframe
}catch(e){
  //it may be an iframe but from another domain
}

if (ploc) ... //ok its an iframe and is from same domain the we can proceed