Отправка формы с действием https: // в скрытый iframe - PullRequest
0 голосов
/ 27 марта 2011

У меня на странице следующее:

<iframe width="1" height="1" name="hidden-iframe">
<form id="myform" method="POST" action="https://mysite.com/process-form-data.php" target="hidden-iframe">
<input name="data" />
<input type="submit" value="Submit" />
</form>
<script type="text/javascript">
    $('#myform').submit(function(){
        $('#myform').submit();
        setTimeout("location.reload(true);",5000);
        return false;
    });
</script>

Я хочу, чтобы форма была помещена в скрытый iframe, подождите 5 секунд (чтобы у данных формы было достаточно времени для отправки), а затем обновите страницу.

Этот процесс прекрасно работает, если действие формы - http.

Однако, когда действие формы - https, когда пользователь нажимает кнопку Отправить, данные формы отправляются, и браузер загружает https://mysite.com/process-form-data.php. Данные формы не публикуются в скрытом iframe, время ожидания не превышает 5 секунд, а исходная страница не обновляется.

Есть идеи, как добиться поставленной цели? Я должен добавить, что действие формы находится в другом домене, чем сама страница. Очевидно, что здесь должна быть какая-то проблема междоменной безопасности. Есть ли лучший способ сделать это? Я открыт для любых предложений.

1 Ответ

0 голосов
/ 27 мая 2011

Да, это проблема междоменной безопасности.Я полагаю, что у вас возникла бы та же проблема, даже если бы они находились в одном домене, но один был SSL (https), а другой нет (http).

Возможно ли создать службу (на )https://mysite.com/) чтобы получить ваше сообщение? Затем вы можете создать сообщение AJAX и действовать в ответ на ответ с помощью JavaScript на своем сайте. Это также будет гораздо более надежным, чем «подождать 5 секунд»

Надеюсь, это поможет иэто вариант. В противном случае оставшийся вариант - перенаправить на форму нового домена напрямую (без iframe, всю новую страницу), а затем перенаправить обратно на ваш сайт. Неуклюжий, но честный для конечных пользователей. A (реальный, окно.Всплывающее окно open ()) может сделать его немного менее резким.

...