Подтвердить что ты не робот

Error: Permission denied для доступа к ресурсу 'document'

Как я могу исправить это сообщение в Firefox? Я использую iframe, у которого есть якорный тег? Я хотел бы получить ссылку на этот якорь, но я получаю эту ошибку, когда пытаюсь получить доступ к якорю:

var frameWindow = document.getElementById('myIframe').contentWindow;
var anchor = frameWindow.document.links[0]; //.getElementsByClassName('a');
anchor.onclick....
4b9b3361

Ответ 1

Устранение политики с одинаковым исходным кодом

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

свойство document.domain

Если два окна (или фреймы) содержат сценарии, которые задают домен на одно и то же значение, для этих двух окон неприменима политика одинакового происхождения, и каждое окно может взаимодействовать с другим. Например, сотрудничающие скрипты в документах, загруженных из orders.example.com и catalog.example.com, могут устанавливать свои свойства document.domain на "example.com", тем самым делая документы похожими на то, что и каждый документ читается свойства другого. Это может не всегда работать, поскольку порт, хранящийся во внутреннем представлении, может быть отмечен как null. Другими словами example.com порт 80 станет example.com port null, потому что мы обновляем document.domain. Порт null может не обрабатываться как 80 (в зависимости от вашего браузера) и, следовательно, может быть неудачным или успешным в зависимости от вашего браузера.

Совместное использование ресурсов для перекрестных ссылок

Второй метод ослабления политики одного и того же происхождения стандартизирован под названием Cross-Origin Resource Sharing. Этот проект стандарта расширяет HTTP с помощью нового заголовка запроса Origin и нового заголовка ответа Access-Control-Allow-Origin. Он позволяет серверам использовать заголовок для явного списка истоков, которые могут запрашивать файл или использовать подстановочный знак, и разрешать запрашивать файл на любом сайте. Браузеры, такие как Firefox 3.5 и Safari 4, используют этот новый заголовок, чтобы разрешить HTTP-запросы с перекрестным контуром с XMLHttpRequest, которые в противном случае были бы запрещены политикой того же происхождения. [7]

Обмен сообщениями с несколькими документами

Еще одна новая технология обмена сообщениями с несколькими документами позволяет script с одной страницы передавать текстовые сообщения на script на другой странице, независимо от источника script. Вызов метода postMessage() для объекта Window асинхронно запускает событие "onmessage" в этом окне, вызывая любые пользовательские обработчики событий. A script на одной странице по-прежнему не может напрямую обращаться к методам или переменным на другой странице, но они могут безопасно обмениваться данными с помощью этой техники передачи сообщений.

JSONP

JSONP позволяет странице получать данные JSON из другого домена, добавляя на страницу элемент <script>, который загружает ответ JSON из другого домена.

Вызов функции - это "P" JSONP - "заполнение" вокруг чистого JSON или в соответствии с некоторыми префиксом. По соглашению браузер предоставляет имя функции обратного вызова как именованное значение параметра запроса, обычно используя имя jsonp или обратный вызов в качестве имени имени параметра имени запроса в своем запросе на сервер, например,

<script type="application/javascript"
        src="http://server2.example.com/Users/1234?jsonp=parseResponse">
</script>

В этом примере полученная полезная нагрузка будет:

parseResponse({"Name": "Foo", "Id": 1234, "Rank": 7});

Ответ 2

Если iframe указывает на другой домен, вы получите эту ошибку. Это пример вашего браузера, предотвращающий межсайтовый скриптинг: http://en.wikipedia.org/wiki/Cross-site_scripting