OpenID和iframe

Pho*_*ood 8 openid iframe jquery

我在iframe中使OpenID工作时遇到了一些麻烦.

基本上我在主页面上加载了一些重型内容,我想构建一个登录系统,其中页面不需要重新加载(因此再次重新加载所有内容).我使用堆栈交换网站爱上了OpenID,并将其与其他项目相对较好地集成在一起.

我觉得要做我想做的事情我想尝试使用iframe(因为新的窗户让我哭泣),但是我偶然发现在中间某处的某种形式的障碍,因为我的生活无法工作怎么了...

基本上我在jQuery生成的DIV和openID表单中有一个表单,似乎可以动态加载iframe.这些方面的东西:

<script type="text/javascript">
contentboxs = 0;
function contentbox() {
      if (contentboxs == 0){
        $('#mainpage').append("<div id='contentbox'><div style='clear:both;' id='oritext'></div><div id='f_content'><iframe src ='' name='framedcontent' width='580' height='600' scrolling='false'></iframe></div></div>");
        $('#f_content').hide();
        contentboxs++;
      } else {
        $('#contentbox-wipe').remove();
        $('#contentbox').remove();
        contentboxs--;
      }
    }

function loginpanel(){
      contentbox();
      if (contentboxs == 1){
          $('#oritext').append("<form method='post' action='login.php' name='oidform' target='framedcontent'>Please Select your OpenID Provider: <br/><input type='text' name=\"id\" id='openidbox' /><br /><input type='submit' name='submit' value='Log In' onclick='loginsubmit();' ></form>");
      } 
    }
function loginsubmit() {
    $('#oritext').html('');
    $('#contentbox').animate({'height':'600px', 'width':'700px', 'margin-top' : '-300px', 'margin-left' : '-350px'},500, 'linear', function() { $('#f_content').show(); });

}
</script>
<a href='javascript:loginpanel();'>login</a>
Run Code Online (Sandbox Code Playgroud)

据我所知,一切正常.

我的问题在于我重新定向到openID远程站点(再次使用JS沿着这些行:)

echo("<div><p><center>Redirecting...</center></div>");

  echo "<script type='text/javascript'>

  function delayer() {

this.location = '".$url."'

}

setTimeout('delayer()', 3000)

</script>";
Run Code Online (Sandbox Code Playgroud)

对不起,这有点长,但这是我的问题(最后):这对我尝试的一些OID网站工作正常,但有些给我带来问题:谷歌根本不会加载,雅虎和mySpace打开在iframe中很好然后立即将整个窗口重定向到主页和OID页面,并且wordpress返回错误.

我假设这是一个反制措施,以阻止我窃取登录详细信息(这不是我想要实现顺便说一句,因此序言),这很公平,但仍然血腥加重.

这里有什么东西,我做得很迟钝,有什么方法围绕这个,如果上述两者都不是我唯一的其他选择来创建新窗口或建立我自己的登录/注册.

如果你有这个,那么非常感谢你的时间,我希望你不要太在意拼写错误.

Mar*_*ter 6

尝试在弹出窗口(window.open或<a href="" target="login">)中运行登录.这样window.top == window使得网站不会被iframed.然后当你回到自己的身边时,你可以发送一个auth cookie和一个<script> self.close()</ script>

  • 遗憾的是,我很确定由于开放ID提供商实施的限制,他们都要打破iframe或者将你重定向到框架之外的页面以防止邪恶的JS能够绑定到页面. (3认同)