То, как я это делаю, было предложено в ответ на вопрос, который я задал здесь недавно T.J. Crowder. Я не могу найти ответ в последний раз, когда я написал это, потому что средство поиска «Stackoverflow» невероятно хромает, поэтому я, вероятно, напишу в блоге. Основная идея заключается в том, что ваш клиентский код (Javascript) должен добавить дополнительный параметр при отправке запроса на загрузку. Параметр должен содержать некоторую сгенерированную случайную строку (вероятно, достаточно текущей отметки времени). Затем сервер ищет этот параметр, и когда он готовит ответ с файлом загрузки, он также устанавливает cookie и присваивает ему это случайное значение.
Сразу после отправки (или непосредственно перед; это не имеет значения) код Javascript должен запустить интервальный таймер с подпрограммой, чтобы посмотреть значение document.cookie
и посмотреть, содержит ли она эту случайную строку. Как только файл cookie содержит эту строку, вы знаете, что сервер отослал свой ответ и был представлен диалог загрузки файла.