Как добавить ссылку для начала загрузки файла в приложении холста Rails Facebook

В нашем приложении Rails, которое работает на холсте Facebook, у нас есть рабочий процесс, в котором вошедший в систему пользователь может создать документ, а затем загрузить его.

Когда файл готов, мы показываем ссылку на него. Это просто действие Rails, которое рендерится с использованием send_file в dev или head (с соответствующей конфигурацией NGINX) в продакшене. Эта часть работает нормально.

Чтобы файл начал загружаться, не открывая новую вкладку браузера, у нас была ссылка на пустой iframe.

Это работало, но некоторое время назад, предположительно из-за изменения безопасности Facebook, наша ссылка перестала работать. Ошибки JavaScript показывают:

Отказался отображать документ, потому что отображение запрещено X-Frame-Options.

Пользователи по-прежнему могут открыть ссылку в новой вкладке, и она загрузит файл, и быстрое исправление состоит в том, чтобы ссылка открывала новую вкладку браузера, но это не так удобно для пользователя.

Мы пытались изменить параметры X-Frame-Options в заголовках и/или использовать метатеги, но это холст (работающий в iframe), поэтому эти представления просто не отображались.

Я также пробовал это ">сформировал решение, но оно ничего не сделало (я мог сделать это неправильно).

Есть ли способ создать кнопку или ссылку, которая запустит загрузку файла, не открывая новую вкладку браузера?


person gerry3    schedule 19.11.2011    source источник


Ответы (1)


Нужно ли вообще ставить цель? Без установленной цели он не вызовет всплывающее окно загрузки файла в браузере, но оставит текущее окно/вкладку браузера с тем же содержимым?

person Igy    schedule 23.11.2011
comment
Решение было немного сложнее, но это действительно привело меня к правильному пути. Вместо ссылки на страницу холста загрузки я напрямую ссылаюсь на маршрут загрузки (без холста facebook). Затем я удалил всю защиту (просто для проверки). И, конечно же, без цели. Теперь мне нужно добавить новую безопасность с помощью хеш-параметра, но это должно сработать. Спасибо. - person gerry3; 28.11.2011
comment
Единственный недостаток, с которым мы согласны, заключается в том, что мы больше не можем подтвердить, что пользователь, загружающий файл, является тем, кто его создал (поскольку безопасность теперь находится в самой ссылке). - person gerry3; 28.11.2011