iframe形式不在IE中提交但在Firefox中工作

时间:2010-03-17 13:18:30

标签: internet-explorer firefox forms fiddler

我有一个表单,可以在向导中将值发布到页面。当我在Iframe中加载此表单时,一切都在Firefox中工作正常,它将使我进入向导的第二步并维护我填写的值。当我在Internet Explorer中测试时,我没有到达第二步步骤,而不是它返回到向导的第一步,所有字段都是空白。当我在Fiddler中检查这个时,我发现当我在Firefox中将表格发布到Firefox中时,我会得到不同的响应。如何让这个适用于所有浏览器?我做错了什么?

这是我从Fiddler那里得到的回复:

火狐

发表:

Ressult Protocol    Host    URL Body    Caching Content-Type    Process Comments    Custom  
1   302 HTTP    www.dmg.eu  /brugman/budgetplanner/aanmelden.php    0   no-store, no-cache, must-revalidate, post-check=0, pre-check=0  Expires: Thu, 19 Nov 1981 08:52:00 GMT  text/html; charset=UTF-8    firefox:6116    

获取:

#   Result  Protocol    Host    URL Body    Caching Content-Type    Process Comments    Custom  
2   200 HTTP    www.dmg.eu  /brugman/budgetplanner/ 40.677  no-store, no-cache, must-revalidate, post-check=0, pre-check=0  Expires: Thu, 19 Nov 1981 08:52:00 GMT  text/html; charset=UTF-8    firefox:6116

Internet Explorer

发布:

Result  Protocol    Host    URL Body    Caching Content-Type    Process Comments    Custom  
73  302 HTTP    www.dmg.eu  /brugman/budgetplanner/aanmelden.php    0   no-store, no-cache, must-revalidate, post-check=0, pre-check=0  Expires: Thu, 19 Nov 1981 08:52:00 GMT  text/html; charset=UTF-8    iexplore:536    

得到:

Result  Protocol    Host    URL Body    Caching Content-Type    Process Comments    Custom  
74  302 HTTP    www.dmg.eu  /brugman/budgetplanner/ 0   no-store, no-cache, must-revalidate, post-check=0, pre-check=0  Expires: Thu, 19 Nov 1981 08:52:00 GMT  text/html; charset=UTF-8    iexplore:536    

希望有人知道差异是什么:)。

编辑:(更多信息.......)

html

<%@ CODEPAGE=65001 %>
<% Response.Charset = "utf-8" %>


<!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>

<meta name="robots" content="index,follow,noodp" />

<title>Hey</title>

</head>

<body class="body">

<iframe width="800px" height="1024" src="http://www.dmg.eu/brugman/budgetplanner/aanmelden.php">
</iframe>

</body>

</html>

3 个答案:

答案 0 :(得分:10)

此博客上的

信息提供了要解决的完整详细信息和代码:

http://viralpatel.net/blogs/2008/12/how-to-set-third-party-cookies-with-iframe.html

如何在ASP.Net中设置p3p http头?

HttpContext.Current.Response.AddHeader("p3p", "CP=\""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""")

如何在PHP中设置p3p http头?

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

如何在JSP中设置p3p http头?

response.setHeader("P3P","CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'")

如何在ColdFusion中设置p3p http标头?

<cfheader name="P3P" value="CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'" />

从博客文章中解除,以防它死亡。

答案 1 :(得分:1)

在第一种情况下,我相信请求/回复的顺序如下,如果我错了,请纠正我。

我们将致电A brugman / budgetplanner / aanmelden.php和B / brugman / budgetplanner /.

您在某个页面,X和FF中执行以下操作:

Request: POST A 
Response: Redirect B (that's the 302)

Request: GET B
Response: Result of B

然而,在IE中,它似乎如下:

Request: POST A
Response: Redirect B (that's the 302)

Request: GET B
Response: Redirect Y (We see another 302)

正在发生的事情是,第二种情况中的某些事情导致B也返回重定向标头。问题不在于客户端而是服务器。

其他人要求的其他信息:

  • 您发布的4个fiddler标题的请求/响应BODY是什么(转到inspecters,在顶部和底部窗格的Raw View中获取此信息)。这将更清楚地显示上述序列中X和Y的值。
  • 什么是服务器PHP代码,问题几乎肯定是在B(/ brugman / budgetplanner /)

根据IE和FF比较第二个请求的主体应该告诉您服务器如何看待它们(对于服务器,客户端只是准备请求的代理)。根据请求的不同,服务器会发回不同的响应。

答案 2 :(得分:1)

以下是问题所在:

我正在提交表单,检查帖子然后设置会话。 此会话未设置,因为在IE中,如果要在iFrame中使用会话变量,则必须设置标题设置。

这是用于执行此操作的代码:

ADD IN THIS LINE IN ORDER TO SOLVE THE INTERNET EXPLORER ALWAYS GET NEW SESSION ISSUE
header('P3P: CP="CAO PSA OUR"');

这是为了确保IE允许您使用会话。

更多信息: http://www.w3.org/P3P/