Небезопасная попытка JavaScript получить доступ к фрейму с помощью URL. - PullRequest
3 голосов
/ 22 августа 2011

Я создаю мобильное приложение jQuery с пробелом в телефоне. Существует проблема Unsafe JavaScript attempt to access frame, когда я пытался получить доступ к странице в iframe (возможно, webkit). Обе страницы в рамке и родительская страница находятся локально, что начинается с file:///. Я знаю, где такой вопрос Небезопасная попытка JavaScript получить доступ к фрейму в Google Chrome Но я не могу passing the --allow-file-access-from-files switch at startup включить мой телефон. И я также не хочу развертывать свое приложение в интернете. Есть ли другой способ решить эту проблему? Должно быть лучше, чтобы мне не нужно было вносить какие-либо изменения в браузер. Спасибо.

1 Ответ

2 голосов
/ 22 августа 2011

Я не уверен, что Webkit следует тем же правилам, но есть прецедент.

https://developer.mozilla.org/en/Same-origin_policy_for_file%3a_URIs

В Gecko 1.8 или более ранней версии любые два файла: URIсчитаются однопроходными.Другими словами, любой HTML-файл на вашем локальном диске может читать любой другой файл на вашем локальном диске.

Начиная с Gecko 1.9, файлы могут читать только некоторые другие файлы.В частности, файл может читать другой файл, только если родительский каталог исходного файла является каталогом-предком целевого файла.Однако каталоги не могут быть загружены таким способом.

Например, если у вас есть файл foo.html, который обращается к другому файлу bar.html, загрузка будет выполнена успешно, только если bar.html находится в том же каталоге.как foo.html или в каталоге, содержащемся в том же каталоге, что и foo.html.

Эта политика затрагивает все, что выполняет проверки того же источника, включая XMLHttpRequest, XSLT и XBL.

При доступе к DOM из каждого окна каждый файл рассматривается как отдельный источник, за одним исключением: если файл загружается из другого файла, который в противном случае мог бы загрузить его в соответствии с этой политикой того же источника, считается, что он имеет одинаковое происхождение.,Эта загрузка может происходить через подкадр, ссылку, набор местоположений, вызов метода window.open () и т. П.

Например, если файл /home/user/foo.html представляет собой набор фреймов и одиниз кадров является /home/user/subdir/bar.html, считается, что кадр и набор фреймов имеют одинаковое происхождение.С другой стороны, если файл /home/user/subdir/foo.html является набором фреймов, а фрейм является /home/user/bar.html, считается, что фрейм и фрейм-набор имеют разные источники.

Для нового параметра security.fileuri.strict_origin_policy со значением по умолчанию можно установить значение false, если пользователь не хочет строго применять ту же политику происхождения в файле: URI.

...