发布到iframe,但是iframe会将顶部窗口重定向到操作网址而不是自我?

我正在使用此处提到的表单帖子加载带有一些帖子数据的iframe:</ p>

如何发布到iframe?</ a > </ p>

一切正常。
但是,如果我的iframe网址中有重定向(通过标题或javascript片段),
it不会重定向到iframe中的下一个网址,但是 而是重定向父窗口。</ p>

例如:要发布到iframe:</ p>

 &lt; form action =“do_stuff.aspx”method =  “post”target =“my_iframe”&gt; 
&lt; input type =“submit”value =“Do Stuff!” /&gt;
&lt; / form&gt;

&lt;! - 提交表单时,服务器响应将显示在此iframe中 - &gt;
&lt; iframe name =“my_iframe”src =“not_submitted_yet.php “&GT;&LT; / iframe中&GT;
</代码> </ PRE>

not_submitted_yet.php:</ p>

 <代码>&LT; PHP 
\ n //使用发布数据做一些事情
//重定向到成功网址
header(“位置:THE_URL”);

?&gt;
</ code> </ pre>

< 问题是问题是在iframe本身没有打开THE_URL,而是在完整的浏览器窗口中打开,这是一种不受欢迎的行为。
我该如何解决这个问题?
在firefox和chrome中的行为相同。</ p> \ n </ div>

展开原文

原文

I am loading an iframe with some post data, by using a form post as mentioned here too :

How do you post to an iframe?

Everything works fine. However,if my iframe url has a redirect in it ( through header or javascript snippet), it does not redirect to the next url within the iframe, but instead redirects the parent window.

eg: To post into iframe :

<form action="do_stuff.aspx" method="post" target="my_iframe">
  <input type="submit" value="Do Stuff!" />
</form>

<!-- when the form is submitted, the server response will appear in this iframe -->
<iframe name="my_iframe" src="not_submitted_yet.php"></iframe>

not_submitted_yet.php:

<?php

// DO some stuff with post data 
// redirect to a success url
header("Location: THE_URL");

?>

The problem is THE_URL does not open in the iframe itself, instead it opens in full browser window, which is an undesired behaviour. How can I fix this ? The behaviour is same in firefox and chrome.

3个回答



我认为这里发生的事情是THE_URL是一些破坏帧的受保护页面。 也许是维基百科或其他。 使用如下代码:</ p>

  if(top.location!= location){
top.location.href = document.location.href;
}
</ code> </ pre>
</ div>

展开原文

原文

I think that what can happend here is that THE_URL is some protected page that break frames. Perhaps wikipedia or other. With a code like this one:

if (top.location != location) {
    top.location.href = document.location.href ;
  }

duanbinmi8970
duanbinmi8970 那么也许目标由于某种原因不起作用,也许是页面中具有相同名称的另一个对象。 您可以尝试将名称修改为更独特的名称,并将if =“thename”添加到iframe。 所以iframe按名称和id命名。
8 年多之前 回复
douhan4093
douhan4093 ,nopes我重定向你的URL是我的。
8 年多之前 回复



这不能直接解答您的问题,但由于您已经在使用javascript,为什么不通过AJAX帖子提交表单? 返回新URL的jQuery帖子可以工作:</ p>

  var submitData = $('#yourForm')。serialize(); 
$ .post('/ your / url',submitData,function(data){
//可能对数据中返回的值进行一些验证。
window.location.href = data;
});
</ code> </ pre >
</ div>

展开原文

原文

This doesn't directly answer your issue, but since you're already using javascript, why not submit the form via an AJAX post? A jQuery post that returns the new URL could work:

var submitData = $('#yourForm').serialize();
$.post('/your/url', submitData, function(data) {
    // Probably put some validation on the value coming back in data.
    window.location.href = data;
});



您可以尝试使用php函数 file_get_contents ,而不是标题重定向。 </ p>

 &lt;?php 
$ success_page = file_get_contents('http://www.example.com/');
echo $ success_page;
?&gt;

</ code> </ pre>
</ div>

展开原文

原文

You could try using the php function file_get_contents, instead of header redirecting.

<?php
$success_page = file_get_contents('http://www.example.com/');
echo $success_page;
?> 

doucu7330
doucu7330 这样做的问题是你不能在file_get_contents中使用用户的参数,否则人们会开始使用你的页面作为进行攻击的某种代理。
8 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐