好的,我有一个页面,在这个页面上我有一个 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 URL 是
http://qa-www.mysite.com/pageB.html
当我尝试从pageB.html(iframe 页面)获取 URL 时,我不断收到相同的访问被拒绝错误。所以看起来即使是子域也算作跨站点脚本,这是正确的,还是我做错了什么?
pageB.html
你是对的。使用 iframe 时,子域仍被视为单独的域。可以使用 传递消息postMessage(...),但是故意使其他 JS API 无法访问。
postMessage(...)
仍然可以根据上下文获取 URL。有关更多详细信息,请参阅其他答案。