Javascript 如何获取iframe父页面的引用源?

Javascript 如何获取iframe父页面的引用源?,javascript,php,iframe,http-headers,http-referer,Javascript,Php,Iframe,Http Headers,Http Referer,我们正在获取iframe输入表单代码并将其放在网站页面上。如果某人登陆页面并将其信息输入表单,我们希望能够看到他们来自何处 例如:我们的iframe嵌入在页面上。该页面的URL将发布到Facebook。有人点击链接,登陆页面,并将其信息输入我们的iframe输入表单。然后我们想说,1个推荐来自Facebook 我们尝试使用$\u SERVER['HTTP\u REFERER'],但这只返回嵌入iframe的父页面URL,这是我们不希望看到的。我们需要父页面的实际URL(在上面的示例中,它将是Fa

我们正在获取iframe输入表单代码并将其放在网站页面上。如果某人登陆页面并将其信息输入表单,我们希望能够看到他们来自何处

例如:我们的iframe嵌入在页面上。该页面的URL将发布到Facebook。有人点击链接,登陆页面,并将其信息输入我们的iframe输入表单。然后我们想说,1个推荐来自Facebook


我们尝试使用$\u SERVER['HTTP\u REFERER'],但这只返回嵌入iframe的父页面URL,这是我们不希望看到的。我们需要父页面的实际URL(在上面的示例中,它将是Facebook)。是否仍然可以获取此信息?

不幸的是,跨域安全将阻止您获取此信息,因为您的iframe与嵌入它的父页面不在同一个域中。您可以在iframe中检查推荐人,但它只会提供嵌入它的页面的名称

如果您在同一个域中,则可以访问javascript中的
document.referer
,并可以通过iframe检索该文档

不过我有一个解决办法

如果使用脚本将iframe嵌入父页面,则可以执行类似的操作

function createIFrame() {
    var ref = document.referrer;
    ifrm = document.createElement("iframe"); 
    ifrm.setAttribute("src", "http://www.nba.com/?referrer="+ref); 
    ifrm.style.width = 640+"px"; 
    ifrm.style.height = 480+"px"; 
    document.body.appendChild(ifrm);
} 

createIFrame();
这将允许您在iframe中从url读取查询字符串
referer
,并将该信息发送到服务器。这将需要您在小部件中打包一点javascript,但它可能是您唯一的解决方案


JSFIDLE-

iframe和父页面是否在同一个域中?否。iframe托管在一个单独的域中,而父页面是一个单独的域。我添加了我唯一能想到的答案。跨域安全性不允许您通过另一个域上的iframe获取推荐人。