3

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

这是我从 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

IE浏览器

邮政:

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

3 回答 3

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'" />

从博客文章中提取,以防万一它死了。

于 2011-01-07T10:18:47.513 回答
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 个提琴手标头的请求/响应主体是什么(转到检查员,顶部和底部窗格上的原始视图以获取此信息)。这将更清楚地显示我上述序列中 X 和 Y 的值。
  • 服务器 PHP 代码中有什么,问题几乎肯定在 B (/brugman/budgetplanner/)

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

于 2010-03-17T14:19:18.087 回答
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/

于 2010-03-19T07:31:13.207 回答