开发者

IE8: Submit a form within an iFrame does not work

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 t开发者_StackOverflow中文版oken from the form to get it working correctly.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜