【问题标题】:IE8: Submit a form within an iFrame does not workIE8:在 iFrame 中提交表单不起作用
【发布时间】:2012-01-26 17:23:53
【问题描述】:

我有一个带有 iFrame 的框架集,其中包含一个表单。 当我提交表单时,IE8 不会发送表单值。火狐可以。 如果没有环境框架集,它也可以工作。

这是我的代码:

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 值来保护表单传输。出于某种原因,在我的情况下,IE8 无法存储此 cookie。现在我从表单中删除了 csrf 令牌以使其正常工作。

【问题讨论】:

  • 请理解,通过从表单中删除 CSRF 值,您将面临 CSRF 攻击。这可能是也可能不是什么大问题,具体取决于表单的用途。
  • 谢谢,您的问题和随后的编辑:为我指出了我也遇到的错误的方向。 +1

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


【解决方案1】:

CSRF 不是主要问题。我的问题是由 IE 安全设​​置引起的。 IE 不允许 a.o.来自带有下划线的域的 cookie。 我的域是 foo_bar.dev.domain.com,在将其更改为 foo-bar.dev.domain.com 后它工作正常,也启用了 CSRF。

【讨论】:

    猜你喜欢
    • 2014-02-03
    • 2012-09-28
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多