Небезопасный JavaScript пытается получить доступ к кадру с URL-адресом
Я получаю ошибку ниже, когда пытаюсь установить значение хэша в родительский url из iframe, который содержит другой домен url:
Небезопасный JavaScript пытается получить доступ к фрейму с URL-адресом "URL1" из фрейма с URL-адресом "URL2". Домены, протоколы и порты должны соответствовать.
Как я могу исправить эту проблему?
Ответы
Ответ 1
Из дочернего документа разного происхождения вам не разрешен доступ к верхнему окну location.hash
, но вы можете сами установить свойство location
.
Это означает, что если верхнее расположение окна http://example.com/page/
, вместо выполнения
parent.location.hash = "#foobar";
вам нужно знать местоположение родителей и делать
parent.location = "http://example.com/page/#foobar";
Поскольку ресурс не перемещается, это будет работать так, как ожидалось, только изменив хэш-часть URL.
Если вы используете это для междоменной связи, я бы рекомендовал вместо этого использовать easyXDM.
Ответ 2
Кросс-рамные скрипты невозможны, если два кадра имеют разные домены → Безопасность.
Смотрите это: http://javascript.about.com/od/reference/a/frame3.htm
Теперь, чтобы ответить на ваш вопрос: нет решения или работы, вы просто должны проверить свой сайт-дизайн, почему должны быть два кадра из разных доменов, которые меняют URL-адрес другого.
Ответ 3
Я получал то же сообщение об ошибке, когда пытался создать домен для iframe.src.
Для меня ответ заключался в том, чтобы изменить iframe.src на url в домене SAME, но на самом деле это была страница html re-direct в желаемый домен. Другой домен появился в моем iframe без каких-либо ошибок.
Работал как шарм.:)
Ответ 4
Решением может быть использование локального файла, который извлекает удаленный контент
remoteInclude.php
<?php
$url = $_GET['url'];
$contents = file_get_contents($url);
echo $contents;
HTML
<iframe frameborder="1" id="frametest" src="/remoteInclude.php?url=REMOTE_URL_HERE"></iframe>
<script>
$("#frametest").load(function (){
var contents =$("#frametest").contents();
});
Ответ 5
Я обнаружил, что использование XFBML-версии Facebook как кнопки вместо версии HTML5 исправило эту проблему. Добавьте код ниже, где вы хотите, чтобы кнопка отображалась:
<div id="fb-root"></div>
<script>(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like send="true" layout="button_count" width="50" show_faces="false" font="arial"></fb:like>
Затем добавьте это в свой HTML-тег:
xmlns:fb="http://ogp.me/ns/fb#"
Ответ 6
Проблема даже в том, что вы создаете прокси-сервер или загружаете контент и вводите его, как если бы он был локальным, любые скрипты, которые определяют этот контент, будут загружаться из другого домена и вызывать проблемы между доменами.