2011-04-28 71 views
1

我有一个框架集,其中包含一个带有表单的iFrame。 当我提交表单IE8不发送表单值。 Firefox的确如此。 没有环境框架集的作品。IE8:在iFrame中提交表单不起作用

这是我的代码:

form.php的:

<form method="post" action="doit.php" name="myForm" id="myForm" target="myFrame"> 
    <input type="hidden" id="customer__csrf_token" name="customer[_csrf_token]" value="0136dba17fc1a81dc2c3b44dcb513712" /> 
    ... 
    <a onClick="document.myForm.submit();">Send</a> 
</form> 

site.html:

<iframe id="myFrame" name="myFrame" src="form.php" frameborder="0" >foo</iframe> 

的index.html:

<html> 
    <head></head> 
    <frameset rows='100%,*'> 
     <frame name='target' src='site.html'> 
     <noframes>foo</noframes> 
    </frameset> 
</html> 

我也试图与这些调用提交表单:

​​

你能帮助我吗?

编辑:

我发现这个问题。我使用symfony框架。 symfony使用一个隐藏的csrf标记结合一个cookie值来保护表单传输。出于某种原因,在我的情况下,IE8无法存储这个cookie。现在我从窗体中删除了csrf标记以使其正确工作。

+0

要明白,通过从表单中删除CSRF值,您就可以开放CSRF攻击。这可能会或可能不会成为一件大事,具体取决于表单在做什么。 – 2011-04-28 18:57:08

+0

谢谢你,你的问题和随后的编辑:指出我正在经历一个错误的方向。 +1 – Christopher 2012-01-04 10:05:47

回答

1

CSRF不是主要问题。在我的情况下,问题是由IE安全设置引起的。 IE不允许a.o.来自其中带有下划线的域的Cookie。 我的域名是foo_bar.dev.domain.com,将其链接到foo-bar.dev.domain.com它的工作原理与启用的CSRF一样。