Я пытаюсь сохранить пару изображений, на которые ссылается веб-страница, в автономном хранилище. Я использую IndexedDB в Firefox и FileSystem API в Chrome. Мой код на самом деле является расширением, поэтому в Firefox я работаю на Greasemonkey и на Chrome в качестве скрипта контента. Я хочу, чтобы это было автоматизировано.
У меня проблема при получении файла изображения. Я использую пример кода из статьи под названием Хранение изображений и файлов в IndexedDB , но я получаю сообщение об ошибке: изображения, которые я пытаюсь загрузить, находятся на другом поддомене, и XHR завершается ошибкой.
XMLHttpRequest cannot load http://...uxgk.JPG. Origin http://subdomain.domain.com is not allowed by Access-Control-Allow-Origin.
В Firefox я, вероятно, мог бы использовать GM_xmlhttpRequest
, и это сработало бы (код работает в обоих браузерах, когда я нахожусь в URL одного и того же происхождения), но мне все еще нужно решить проблему для Chrome, в которой другие ограничения (а именно, необходимость взаимодействия с фреймами на странице хоста) требует, чтобы я включил свой сценарий в страницу и утратил свои привилегии.
Итак, я возвращаюсь к тому, что я пытаюсь найти способ сохранения изображений, которые связаны (и могут появляться на) странице, с IndexedDB и / или FileSystem API. Мне нужно либо понять, как решить проблему перекрестного источника в Chrome (и если для этого требуются привилегии, мне нужно исправить способ взаимодействия с jQuery), либо использовать какой-то обратный createObjectURL . В конце дня мне нужен большой двоичный объект (насколько я понимаю, объект File
) для помещения в IndexedDB (Firefox) или для записи в FileSystem API (Chrome)
Помогите, кто-нибудь?
Редактировать: мой вопрос на самом деле может сводиться к тому, как я могу использовать jQuery так, как я хочу, не теряя своих привилегий для скриптов контента в Chrome. Если я это сделаю, я мог бы также использовать перекрестные источники XHR на Chrome . Хотя я бы предпочел получить решение, которое не зависит от этого. В частности, поскольку я хотел бы получить это решение, если я включу сценарий в веб-страницу и не требую, чтобы он был сценарием содержимого / usercript.
Редактировать: я понял, что вопрос только о межсайтовых запросах . Сейчас у меня есть один из трех способов получить блоб изображения с помощью @ chris-sobolewski, этих вопросов и некоторых других страниц (например, this ), что можно увидеть в этой скрипке . Тем не менее, все они требуют специальных привилегий для запуска. Увы, поскольку я работаю на странице с фреймами, из-за известного дефекта в Chrome я не могу получить доступ к фреймам. Поэтому я могу загрузить скрипт в каждый кадр, используя all_frames: true
, но я действительно хочу избежать загрузки скрипта при каждой загрузке кадра. В противном случае, в соответствии с этой статьей , мне нужно выйти из песочницы, но затем он вернется к привилегиям.