IE8: отправить форму в iFrame не работает - PullRequest
1 голос
/ 28 апреля 2011

У меня есть набор фреймов с iFrame с формой в нем.Когда я отправляю форму, IE8 не отправляет значения формы.Firefox делает.Без ambient frameset это работает.

Это мой код:

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 из формы, чтобы он работал правильно.

1 Ответ

1 голос
/ 26 января 2012

CSRF не была главной проблемой. Проблема в моем случае была вызвана настройками безопасности IE. IE не допускает куки с доменов с подчеркиванием в нем. Мой домен был foo_bar.dev.domain.com , после изменения его на foo-bar.dev.domain.com он работал, также с включенной CSRF.

...