好的,我有一个页面,在此页面上有一个iframe。我需要做的是在iframe页面上,找出主页的URL。
我进行了搜索,我知道如果我的iframe页面位于其他域上是不可能的,因为这是跨站点脚本。但是,我读过的所有内容都说,如果iframe页面与父页面位于同一域中,那么例如,它应该可以工作:
parent.document.location parent.window.document.location parent.window.location parent.document.location.href
…或其他类似的组合,因为似乎有多种获取相同信息的方法。
无论如何,这就是问题所在。我的iframe与主页位于同一域中,但不在同一SUB域中。例如,我有
http:// www.mysite.com/pageA.html
然后我的iframe网址是
http:// qa-www.mysite.com/pageB.html
当我尝试从pageB.html(iframe页面)获取URL时,我不断收到相同的访问被拒绝错误。这样看来,即使子域也算作跨站点脚本,这是正确的,还是我做错了什么?
pageB.html
没错 使用iframe时,子域仍被视为单独的域。可以使用传递消息postMessage(...),但是故意使其他JS API无法访问。
postMessage(...)
仍然可以根据上下文获取URL。有关更多详细信息,请参见其他答案。