Библиотека JavaScript для встраивания MS Word и PDF в HTML — кросс-сайт

Этот код

<embed src="http://www.star.le.ac.uk/~slc25/curry.pdf" type="application/pdf" />

<iframe src="http://docs.google.com/gview?url=https://d9db56472fd41226d193-1e5e0d4b7948acaf6080b0dce0b35ed5.ssl.cf1.rackcdn.com/spectools/docs/wd-spectools-word-sample-04.doc&embedded=true"></iframe>

встраивает документ PDF и документ MS Word в веб-страницу HTML.

Тем не менее, для MS Word это зависит от Google, который имеет привычку предлагать интересные вещи, а затем отказываться от них, как только люди начинают полагаться на них; поэтому я хотел бы что-то, что я могу контролировать - библиотеку JS с моего сервера.

Я нашел ViewerJs , который является отличным FOSS — просто посмотрите демоверсии .

Увы, в нем говорится: «Из-за того, что ваш браузер защищает себя от угроз безопасности (что очень хорошо), ViewerJS работает только с документами, которые находятся на вашем собственном сервере».

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

Кто-нибудь знает о бесплатной библиотеке JS, которая позволит мне вставлять документы MS Word и PDF в веб-страницу, когда эти документы поступают из другого домена с веб-страницы?


[Обновление] Может быть, я просто плохо объяснил.

На сайте А размещаются документы, которые должны быть встроены в страницу на сайте Б.

Я управляю сайтом А, а также предоставляю код для одной страницы сайта Б, на которой должен отображаться встроенный документ.

Владелец сайта Б загрузит эту страницу на свой сайт один раз после того, как я закодирую ее, но не будет вносить никаких других изменений на сайт Б. Конечный пользователь получает URL-адрес по электронной почте со ссылкой на страницу на сайте Б с некоторыми параметрами для указать, что должно быть вставлено


[Update++] Этот Plunk делает это, но использует Google Docs, и я бы предпочел не полагаться на какой-либо код со стороннего сайта (я не возражаю против стороннего кода, я просто хочу, чтобы он был на моем сайте)

Никто? Даже ради бонуса? Я был бы рад наградить больше баллов за хороший ответ. Еще много очков

Ответы (1)

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

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

Но если у вас есть контроль над внешним сервером, вы можете настроить доступ к своим файлам из разных источников. Прочтите о спецификации CORS.

В Apache сделайте это, включив модуль mod_headers, а затем в конфигурации .htaccess или виртуального хоста.

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "http://site2.com"
</IfModule>

или же:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>
Документы Google управляют этим. Я просто хочу что-то, что делает то же самое, но над кодом, который я контролирую, а не Google. У меня есть контроль над сервером, на котором размещены файлы DOC/PDF, но не над сервером, который обслуживает веб-страницы.
Если у вас нет такого контроля над внешним сервером/сайтом, вы не можете сделать это каким-либо другим способом, кроме как заставить первый сайт загрузить его копию перед отображением, независимо от того, какую библиотеку отображения вы используете.
Я что-то упустил? Код, который я привел выше, встраивает 2 случайных файла Google, один PDF и один MS Word, на мою веб-страницу. Проблем с межсайтовым подключением вроде бы нет. Тем не менее, MS Word встроен с использованием некоторого кода на веб-сайте Google, и я бы предпочел использовать код, над которым у меня есть контроль. Пожалуйста, смотрите обновление вопроса с дополнительным объяснением.
[Этот удар] (достигает). Увы, я не могу заставить его работать на моем сайте... пока :-(
@Mawg: Ваш последний комментарий должен был содержать ссылку?
Два слова - D'и oh!. Спасибо, Николаус, забыл ссылку на jsfiddle.net/e6p244xt