Показать диалоговое окно «Сохранить как» при загрузке файла из iframe через PHP

Я знаю, что подобные вопросы были заданы раньше, но я считаю, что у этого есть некоторая разница.

На моей веб-странице есть Iframe . Этот iframe загружает страницу из какого-либо другого домена (работает междоменный скриптинг). Теперь, когда я нажимаю кнопку в этом iframe, он делает запрос AJAX через jQuery и создает текстовый файл на сервере PHP . Теперь я хочу, чтобы появилось нормальное диалоговое окно «Сохранить как», чтобы я мог загрузить этот файл с сервера.

Я пробовал все функции Content-Disposition и header() на стороне PHP, но диалог «Сохранить как» не отображается, хотя файл успешно создан на сервере. Я думаю, проблема в том, что я хочу запустить загрузку файла из iframe, который загружает контент из какого-либо другого домена.

Есть ли обходной путь для этого?

Благодарю.

Related of "Показать диалоговое окно «Сохранить как» при загрузке файла из iframe через PHP"

Я нашел решение самостоятельно. Вместо AJAX используется технология Iframe . Следующий код jQuery должен быть записан в iframe. Он запускает загрузку через iframe вместо запроса AJAX на сервер.

 $(document).ready(function(){ $('#download').click(function(){ var ifr = $('<iframe id="secretIFrame" src="" style="display:none; visibility:hidden;"></iframe>'); $('body').append(ifr); var iframeURL = 'http://you_domain.com/download.php?str='+encodeURIComponent(data_to_be_posted); ifr.attr('src', iframeURL); return false; }); }); 

Это код для download.php :

 <?php $str = html_entity_decode($_REQUEST['str']); $file_name = 'export_data.txt'; header("Cache-Control: ");// leave blank to avoid IE errors header("Pragma: ");// leave blank to avoid IE errors header("Content-Disposition: attachment; filename=\"".$file_name."\""); header("Content-length:".(string)(filesize($str))); header("Content-Type: application/force-download"); header("Content-Type: application/download"); header('Content-Type: application/octet-stream'); header('Content-Type: application/txt'); header("Content-Transfer-Encoding: binary "); echo $str; exit; ?>