为了账号安全,请及时绑定邮箱和手机立即绑定

从iframe访问父URL

从iframe访问父URL

呼唤远方 2019-07-10 15:11:29
从iframe访问父URL好的,我有一页,在这一页上我有一个iframe。我需要做的是在iframe页面上,找出主页面的URL是什么。我已经搜索过了,我知道如果我的iframe页面位于不同的域,这是不可能的,因为这是跨站点脚本。但是我所读到的任何地方都说,如果iframe页面与父页位于同一个域上,那么如果我这样做,它就会工作:parent.document.locationparent.window.document.locationparent.window.locationparent.document.location.href..或其他类似的组合,因为似乎有多种方法来获取相同的信息。不管怎样,这就是问题所在。我的iframe和主页面在同一个域上,但是它不在同一个子域上。所以,举个例子http:/www.mysite.com/pageA.html然后我的iframe URL是http:/qa-www.mysite.com/pageB.html当我试图从pageB.html(iframe页面),我一直收到相同的访问拒绝错误。所以看起来,即使是子域也算作跨站点脚本,是这样吗,还是我做错了什么?
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

你说得对。在使用iframes时,子域仍然被认为是单独的域。可以使用postMessage(...),但是其他的JS API却是故意使人无法访问的。

还可以根据上下文获取URL。有关详细信息,请参阅其他答案。


查看完整回答
反对 回复 2019-07-10
?
holdtom

TA贡献1805条经验 获得超10个赞

是的,如果IFRAME和主页不在同一个(子)域中,则不允许访问父页面的URL。但是,如果您只需要主页的URL(即浏览器URL),可以尝试如下:

var url = (window.location != window.parent.location)
            ? document.referrer            : document.location.href;

注:

window.parent.location;它避免了OP中的安全错误,该错误是由于访问href财产:window.parent.location.href导致“用原点阻止帧.”

document.referrer引用“链接到此页的URI”。这可能返回文档,如果其他源决定了iframe例如,地点:

  • 容器iframe@Domain 1
  • 向域2发送子iframe
  • 但在孩子身上。域2重定向到域3(即身份验证,可能是SAML),然后域3指示

    到域2(即通过表单提交(),一种标准的SAML技术)
  • 对孩子来说

    document.referrer

    将是域

    3

    ,而不是包含域。

    1

document.location引用“Location对象,其中包含有关文档URL的信息”;电流文档,即当前打开的iframe。什么时候window.location === window.parent.location,那么如果href作为包含父母的href.


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 701 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号