我有一个表单,可以在向导中将值发布到页面。当我在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
发布:
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>
答案 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也返回重定向标头。问题不在于客户端而是服务器。
其他人要求的其他信息:
根据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/