IE8:在iFrame中提交表单不起作用

时间:2011-04-28 09:28:27

标签: forms iframe symfony1 internet-explorer-8 csrf

我有一个带有iFrame的框架集,其中包含一个表单。 当我提交表单时,IE8不会发送表单值。 Firefox确实如此。 没有环境框架集就可以了。

这是我的代码:

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>

我还尝试使用这些调用提交表单:

$('#myForm').submit();
document.forms['myForm'].submit();
parent.frames['myFrame'].document.forms['myForm'].submit();
<input type="submit" value="send" name="send" id="send" />

你能帮助我吗?

修改

我发现了问题。我使用symfony框架。 symfony使用隐藏的csrf标记和cookie值来保护表单trasmission。出于某种原因,在我的情况下,IE8无法存储此cookie。现在我从表单中删除了csrf标记,以使其正常工作。

1 个答案:

答案 0 :(得分:1)

CSRF不是主要问题。我的问题是由IE安全设置引起的。 IE不允许a.o.域中带有下划线的cookie。 我的域名是 foo_bar.dev.domain.com ,在将其修改为 foo-bar.dev.domain.com 之后,它也可以使用已启用的CSRF。