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

发布于 11-03 12:34 字数 1288 浏览 2 评论 0原文

我有一个带有 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" />

Can你帮我吗?

编辑:

我发现了问题。我使用 symfony 框架。 symfony 使用隐藏的 csrf 令牌与 cookie 值相结合来保护表单传输。由于某种原因,在我的情况下,IE8 无法存储此 cookie。现在我从表单中删除了 csrf 令牌以使其正常工作。

I have a frameset with an iFrame with a form in it.
When I submit the form IE8 does not send the form values. Firefox does.
Without the ambient frameset it works.

This is my code:

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>

I also tried to submit the form with these calls:

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

Can you help me?

EDIT:

I found the problem. I use the symfony framework. symfony uses a hidden csrf token in combination with a cookie value to secure the form trasmission. For some reason in my case IE8 is not able to store this cookie. Now I removed the csrf token from the form to get it working correctly.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

趁微风不噪2024-11-10 12:34:03

CSRF 不是主要问题。我的问题是由 IE 安全设​​置引起的。 IE 不允许来自包含下划线的域的 ao cookie。
我的域名是 foo_bar.dev.domain.com,将其更改为 foo-bar.dev.domain.com 后它就可以工作,并且还启用了 CSRF。

CSRF was not the main problem. The problem in my case was caused by the IE security settings. IE does not allow a.o. cookies from domains with an underscore in it.
My domain was foo_bar.dev.domain.com, after chaning it to foo-bar.dev.domain.com it worked, also with enabled CSRF.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文