2010-09-26 4 views
1

Привет Я делаю расширение хром. Где сохранить страницу в базу данных в виде строки, а затем открыть его позже как dataURI схемы, как:с помощью encodeURI для отображения всей страницы

d = 'data:text/html;charset=utf-8'+encodeURI('HTML TEXT') 
location.reload(d); 

Проблема с этим состоит в том, что страница, говорят, что его зовут http://X/, в котором я выполнил выше команда теряет файлы javascript в своей голове. Я рассмотрел использование document.write(d), если d имеет прикрепленную к нему строку с <head>...</head> от http://X/.

Но это открывает большую проблему уязвимости для XSS. На данный момент я пытаюсь думать о белых тегах, когда я сохраняю исходную страницу ... есть ли другой способ?

ответ

0

Я не уверен, что вы подразумеваете под http://X/, но если вы хотите скопировать веб-сайт, чтобы сохранить его источник (т. Е. Иметь код, который вы даете, запускать точно так, как если бы он был загружен с http://X/), то я боюсь, что это невозможно с стандартные методы DOM (это будет уязвимость безопасности, которая обойдется в политике безопасности одного и того же происхождения).

Если вы хотите запустить 3-й партии исходников, безопасно, а затем использовать это:

<iframe sandbox src="data:…"></iframe> 

Вы можете изменить исходный код и вставить в <base href="http://X/"> там, чтобы относительные URL-адреса работают должным образом.

Смежные вопросы