我可以从父页面验证 iFrame 页面吗?

Posted

技术标签:

【中文标题】我可以从父页面验证 iFrame 页面吗?【英文标题】:Can I authenticate an iFrame page from the parent page? 【发布时间】:2011-05-08 18:04:18 【问题描述】:

我有一个简单的 html 页面,它可以在几个状态页面中循环显示,这些页面显示在校园周围的几台电视上。我会定期更新页面和链接。很多时候页面需要验证。远程到终端提供凭据是一件痛苦的事。有些是 HTTP 身份验证,有些是基于 <form> 的身份验证嵌入到站点中。很多时候,我可以通过发布正确凭据的 HTML 和 javascript 绕过基于 <form> 的身份验证。

    有没有更好的出行方式 基于<form> 的身份验证 从主机页面? (下)

    有什么办法可以绕过 基于服务器/HTTP 的身份验证 从主机页面,而不必 手动验证 显示?

<form> 身份验证是指<form> 操作会生成会话 cookie? (mikerobi,感谢您的评论)

这是主机页面的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title> 
  Important Stuff 
</title>
    <script src="/scripts/jquery.js" type="text/javascript"></script>
    <style type="text/css">
        html, body, iframe  margin:0; height:100%; 
        iframe  display:block; width:100%; border:none; 
    </style>
    <script type="text/javascript">
        var link = new Array();        
        link[0] = "http://mycompany.intranet/";        
        link[1] = "http://mycompany.intranet/weather.htm";        
        link[2] = "http://mycompany.intranet/systemstatus/";        
        var linkIndex = 0;
        setInterval("doSomething()", 10000);

        function doSomething() 

            if (linkIndex >= link.length)
            
                // reload in case the page has been updated
                window.location.reload();
            

            $("#frame").attr("src", link[linkIndex]);
            linkIndex++;
        
    </script>
</head>
<body>
    <iframe id="frame" src="http://mycompany.intranet/"></iframe>
</body>
</html>

【问题讨论】:

什么是基于&lt;form&gt; 的身份验证?表单操作是否生成会话 cookie? 【参考方案1】:

    我没有看到您发送基于 POST 登录凭据的代码,但如果您使用 JavaScript 自动提交表单(使用其 .submit() 方法),那可能是最好的方法.请记住,HTML 表单的 target 属性允许您在不同的窗口(或者在您的情况下,iframe)中提交表单 - 只需为 iframe 提供 name="xyz" 属性并为表单使用 target="xyz" .该表单将位于主机页面中,并且可以使用 CSS display: none 隐藏。

    您可以在 URL 中包含 HTTP 基本身份验证用户名和密码,例如:http://username:password@www.example.com/path。请注意,当前的网络浏览器在其默认配置中可能不允许这样做,以防范特定的网络钓鱼技术,您可能必须通过编辑 Windows 注册表或存储网络浏览器设置的其他位置来change the configuration。

【讨论】:

谢谢! #1 我正在做 #2 我一直在尝试,但没有成功,但至少我现在明白为什么了。

以上是关于我可以从父页面验证 iFrame 页面吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何从父页面调用 iframe 中的脚本?

如何从父文档中捕获 iframe 内部的刷新?

iframe与父页面传值

iframe与父页面传值

从父级的播放按钮在 iframe 中播放 html5 视频

iframe可以使用父页面中的资源吗?